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
键。太棒了!我现在明白了。谢谢你的帮助!