【问题标题】:php - push array into an array -(pushing both key and the array)php - 将数组推入数组 -(同时推键和数组)
【发布时间】:2013-07-30 12:13:12
【问题描述】:

我正在尝试将一个数组添加到现有数组中。我可以使用 array_push 添加数组。唯一的问题是,当尝试添加包含数组键的数组时,它会在现有数组中添加一个额外的数组。

我最好给你看

foreach ($fields as $f)
{  
    if ($f == 'Thumbnail')
    {
        $thumnail = array('Thumbnail' => Assets::getProductThumbnail($row['id'] );
        array_push($newrow, $thumnail);
    }
    else
    { 
        $newrow[$f] = $row[$f];
    }
}

上面的 fields 数组是从 SQl 查询动态馈送的数组的一部分,然后将其馈送到名为 $newrow 的新数组中。但是,对于这个$newrow 数组,我需要添加缩略图数组字段。

以下是上述代码的输出(使用var_dump)。代码的唯一问题是我不想在数组中创建单独的数组。我只需要将它添加到数组中。

 array(4) { ["Product ID"]=> string(7) "1007520"
           ["SKU"]=> string(5) "G1505"
           ["Name"]=> string(22) "150mm Oval Scale Ruler"            
           array(1) { ["Thumbnail"]=> string(77) "thumbnails/products/5036228.jpg" } }

我非常感谢任何建议。

【问题讨论】:

标签: php arrays array-push


【解决方案1】:

你真正想要的是:

$newrow['Thumbnail'] = Assets::getProductThumbnail($row['id']);

【讨论】:

  • 感谢大家的热心帮助。我想我对数组的工作方式有点困惑。 deceze 和 xdim222 提供的解决方案是正确的。谢谢大家的热心帮助
【解决方案2】:

或者,您也可以将其直接分配给 $newrow:

if ($f == 'Thumbnail')
  $newrow[$f] = Assets::getProductThumbnail($row['id']);
else
...

或者,如果您希望代码更短:

foreach($fields as $f)
  $newrow[$f] = ($f == 'Thumbnail')? Assets::getProductThumbnail($row['id']) : $row[$f];

但是,如果您按代码中的行数获得报酬,请不要这样做,请继续使用您的代码 :) j/k

【讨论】:

  • 大家好。 array_merge 仅适用于 php 5.4;我需要使用 php 5.3。我也不能使用 xdim222 发布的解决方案,因为我需要将数组“键和值”放在新的 $newrow 数组中。有没有人有什么建议
  • @andreea115 array_merge 来自 PHP 4。但是,版本 4 和 5 之间的函数签名有所不同。从 PHP 版本 5 开始,array_merge 只接受数组。请参阅:php.net/manual/en/…
【解决方案3】:

你可以使用array_merge函数

$newrow = array_merge($newrow, $thumnail);

【讨论】:

    猜你喜欢
    • 2014-06-21
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多