根据W3Schools,这应该有效:
// 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 var_dump:
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" }
我的$ json var_dump:
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" } }
我无法理解我做错了什么。有人可以解释一下吗?
提前致谢!
答案 0 :(得分:0)
查看输出后,很明显数据在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']
];
}
答案 1 :(得分:0)
您可以在PHP中使用json_encode()
来实际构建JavaScript JSON字符串,方法是使用PHP数组并将其传递给它。
//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 );
其次,可能同样重要!