Php 将多维数组添加到另一个数组

Php 将多维数组添加到另一个数组,php,arrays,Php,Arrays,据认为,这应该是可行的: // A two-dimensional array: $cars = array ( array("Volvo",100,96), array("BMW",60,59), array("Toyota",110,100) ); 那么为什么下面的代码没有: $json = []; foreach ($res as $product) { $slur = $product['slur']; $node = [ 'de

据认为,这应该是可行的:

// A two-dimensional array:
$cars = array
  (
  array("Volvo",100,96),
  array("BMW",60,59),
  array("Toyota",110,100)
  );
那么为什么下面的代码没有:

$json = [];

foreach ($res as $product) {
    $slur = $product['slur'];

    $node = [
        'description' => $product['description'],
        'colors' => $product['color'],
        'region' => $product['region']
    ];

    var_dump($node); // Node has proper values

    $json[$slur] = $node; 
}

var_dump($json); // Keys are fine, $product['region'] works, colors and description don't
我的$node变量转储:

array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(6) "europe" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(3) "usa" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(19) "pink, green, purple" ["region"]=> string(6) "europe" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(103) "black, red, silver, blue, green, gunmetal, brightgreen, gold, lightblue, darkblue, orange, pink, purple" ["region"]=> string(6) "europe" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(3) "usa" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(3) "usa" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(6) "europe" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(3) "usa" }
array(5) { ["alignmee"]=> array(3) { ["description"]=> string(0) "" ["colors"]=>     string(0) "" ["region"]=> string(3) "usa" } ["xl"]=> array(3) { ["description"]=> string(0) "" ["colors"]=> string(0) "" ["region"]=> string(3) "usa" } ["hybrid"]=> array(3) { ["description"]=> string(0) "" ["colors"]=> string(0) "" ["region"]=> string(3) "usa" } ["classic"]=> array(3) { ["description"]=> string(0) "" ["colors"]=> string(0) "" ["region"]=> string(3) "usa" } ["original"]=> array(3) { ["description"]=> string(0) "" ["colors"]=> string(0) "" ["region"]=> string(6) "europe" } }
我的$json var_转储:

array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(6) "europe" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(3) "usa" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(19) "pink, green, purple" ["region"]=> string(6) "europe" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(103) "black, red, silver, blue, green, gunmetal, brightgreen, gold, lightblue, darkblue, orange, pink, purple" ["region"]=> string(6) "europe" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(3) "usa" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(3) "usa" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(6) "europe" } array(3) { ["description"]=> string(128) "Ac risus eu amet rhoncus cursus, rhoncus in amet nascetur, diam, elementum porttitor penatibus nec cum dignissim proin et augue." ["colors"]=> string(67) "gun-blue, gun-green, gray-black, gun-orange, gun-lightblue, gun-red" ["region"]=> string(3) "usa" }
array(5) { ["alignmee"]=> array(3) { ["description"]=> string(0) "" ["colors"]=>     string(0) "" ["region"]=> string(3) "usa" } ["xl"]=> array(3) { ["description"]=> string(0) "" ["colors"]=> string(0) "" ["region"]=> string(3) "usa" } ["hybrid"]=> array(3) { ["description"]=> string(0) "" ["colors"]=> string(0) "" ["region"]=> string(3) "usa" } ["classic"]=> array(3) { ["description"]=> string(0) "" ["colors"]=> string(0) "" ["region"]=> string(3) "usa" } ["original"]=> array(3) { ["description"]=> string(0) "" ["colors"]=> string(0) "" ["region"]=> string(6) "europe" } }
我真的不明白我做错了什么。谁能解释一下吗


提前谢谢

查看输出后,很明显数据正在while循环中被覆盖

所以试试这个

$json[$slur][] = $node;
而不是

$json[$slur] = $node;
如果只想添加具有颜色和描述的节点,那么可以在foreach循环中尝试以下操作

if(!empty($product['description']) && !empty($product['color']) ){
 $node = [
        'description' => $product['description'],
        'colors' => $product['color'],
        'region' => $product['region']
    ];

}
在PHP中,您可以通过获取一个PHP数组并将其传递给它,从而实际构造一个JavaScript JSON字符串

//Instigate the $json array, otherwise it'll throw a notice.
$json = array();
foreach ( $res as $product ) {
    $slur = $product['slur'];
    $node = [
        'description' => $product['description'],
        'colors' => $product['color'],
        'region' => $product['region']
    ];
    //We use the [] here to append to a new index
    //on each iteration of the loop; otherwise, it'll overwrite the last value
    $json[$slur][] = $node; 
}

echo json_encode( $json );
其次,可能同样重要

  • 不要向学校学习,去看看吧
  • 使用

当我使用适当的键创建一个虚拟的
$res
数组时,这对我来说非常有效。正如@sebcap26所说,
$res
?$res是一个产品列表$产品['description']也会返回正确的值。至少我想要一个。你能添加你的var_转储吗output@R.vanderPeijl-注释部分不适用于大型代码块。请将其添加到您的问题中,然后删除评论。这样,其他人更容易看到它(您可以应用格式)@R.vanderPeijl没问题!如果您需要任何澄清,请告诉我=)!当$slur在每次迭代中都应该是不同的值时,添加[]如何解决这个问题?为什么这(即使它会添加一个新的数组项)有助于填充描述和区域?正如@ToBe所说,我仍然不明白为什么
$json[$slur][]
有效而
$json[$slur]
无效。@R.vanderPeijl
[]
符号只是,否则,
$node
将覆盖放置在
$slur
键中的任何内容;现在我认为这一切都源于这样一个事实,实际上您的第一个
var\u dump
没有显示任何
slur
键。太棒了!我现在明白了。谢谢你的帮助!