您正在使用PHP array_splice,它的内容如下:
删除数组的一部分并用其他东西替换它
要从数组中删除一个条目,您应该使用PHP unset它读取的位置:
取消设置给定的变量。
所以,你的代码应该是:
<?php
for($i=0;$i<count($json_a[data][entrees]);$i++)
{
if($json_a[data][entrees][$i][transport]!="")
{
//remove this entry from the array
unset($json_a[data][entrees][$i]);
}
}
?>
测试用例:
// Sample Array with 4 entries
$json_a = array(
"data" => array (
"entrees" => array(
array (
"id" => 14,
"date" => '2012-06-14',
"latlng" => '14.000000, -9.00000',
"transport" => ''
),
array(
"id" => 13,
"date" => '2012-06-14',
"latlng" => '13.000000, -8.00000',
"transport" => '12'
),
array(
"id" => 12,
"date" => '2012-06-14',
"latlng" => '12.000000, -7.00000',
"transport" => '45'
),
array(
"id" => 11,
"date" => '2012-06-14',
"latlng" => '11.000000, -6.00000',
"transport" => ''
)
)
)
);
控制输出:
var_dump($json_a);
输出:
数组(1){[“数据”]=>数组(1){[“主菜”]=>数组(4){[0]=>数组(4){[“id”]=>int(14) ["日期"]=> 字符串(10) "2012-06-14" ["latlng"]=> 字符串(19) "14.000000, -9.00000" ["运输"]=> 字符串(0) "" } 1 => array(4) { ["id"]=> int(13) ["date"]=> string(10) "2012-06-14" ["latlng"]=> string(19) "13.000000, -8.00000" ["transport"]=> string(2) "12" } 2 => array(4) { ["id"]=> int(12) ["date"]=> string(10) "2012 -06-14" ["latlng"]=> 字符串(19) "12.000000, -7.00000" ["transport"]=> 字符串(2) "45" } [3]=> 数组(4) { ["id"]=> int(11) ["date"]=> string(10) "2012-06-14" ["latlng"]=> string(19) "11.000000, -6.00000" ["transport"]= > 字符串(0) "" } } } }
运行循环:
for($i=0;$i<count($json_a[data][entrees]);$i++)
{
if($json_a[data][entrees][$i][transport]!="")
{
//remove this entry from the array
unset($json_a[data][entrees][$i]);
}
}
确认输出:
var_dump($json_a);
输出:
数组(1){[“数据”]=>数组(1){[“主菜”]=>数组(2){[0]=>数组(4){[“id”]=>int(14) [“日期”]=>字符串(10)“2012-06-14”[“latlng”]=>字符串(19)“14.000000,-9.00000”[“运输”]=>字符串(0)“”}[ 3]=> array(4) { ["id"]=> int(11) ["date"]=> string(10) "2012-06-14" ["latlng"]=> string(19) " 11.000000, -6.00000" ["transport"]=> string(0) "" } } } }