我有一个包含以下条目的数组:
$row['10']['something'] = "21";
$row['5']['something'] = "42";我想做一个从索引0到10的字符串,但是只设置了索引"5“和"10”。然而,我想要一个这样的字符串:
0, 0, 0, 0, 42, 0, 0, 0, 0, 21 目前我使用的是:
for($i=0; $i <= 10; $i++) {
if (!array_key_exists($i, $row))
$row[$i]['something'] = 0;
if ($i == 10)
$string .= $row['10']['something'];
else
$string .= $row[$i]['something'].', ';
}但我需要更有效的方法。我可以做array_map和内爆,但我不知道如何添加0, 0, 0,...,我只能得到21, 42
澄清一下:
我不能覆盖单个索引,本例中名为$row的数组是从sql查询中填充的。它将完全覆盖现有的数组。
发布于 2014-06-11 04:43:45
听起来您需要array_fill()和array_merge()
http://us1.php.net//manual/en/function.array-fill.php
http://www.php.net//manual/en/function.array-merge.php
$newarray = array_fill(0, 23, 0);
$newarray = array_merge($row, $newarray);
发布于 2014-06-11 04:51:39
只是稍微短一点
for($i=0; $i<=10; $i++) {
if ($i>0) $string .= ', ';
$string .= isset($row[$i]['something']) ? $row[$i]['something'] : '0';
}发布于 2014-06-11 05:37:21
array_fill初始化您的新数组,foreach覆盖选定的索引,join创建最终字符串,这是一种可以接受的方法。
$newArray=array_fill(0, 10, 0);
foreach($row as $key => $value) $newArray[$key] = array_shift($value);
echo join(' ',$newArray);https://stackoverflow.com/questions/24150427
复制相似问题