Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP打印JSON数组中的第1、第3、第5个元素_Php_Arrays_Json - Fatal编程技术网

如何使用PHP打印JSON数组中的第1、第3、第5个元素

如何使用PHP打印JSON数组中的第1、第3、第5个元素,php,arrays,json,Php,Arrays,Json,我尝试从其他网站获取数据并将其转换为json数组 下面的代码用于它 foreach($models1 as $mod) { $result[] = array('model'=> $mod); } $finalResultArray = array( 'mobiles' => $result ); echo json_encode($finalResultArray); 结果是 {“手机”:[{“型号”:“苹果iPhone 5c 16GB”},{“型号

我尝试从其他网站获取数据并将其转换为json数组

下面的代码用于它

foreach($models1 as $mod)
{
    $result[] = array('model'=> $mod);

}

$finalResultArray = array(
        'mobiles' => $result
);

echo json_encode($finalResultArray);
结果是

{“手机”:[{“型号”:“苹果iPhone 5c 16GB”},{“型号”:“93000”},{“型号”:“苹果iPhone 5s 16GB”},{“型号”:“苹果iPhone 5 32GB”},{“型号”:“94280”},{“型号”:“苹果iPhone 4S 16GB”},{“型号”:“82000”},{“型号”:“苹果iPhone 5 16GB”},{“型号”:“93000”}

我想像这样打印这个数组

{“手机”:[{“型号”:“苹果iPhone 5c 16GB”},{“型号”:“苹果iPhone 5s 16GB”},{“型号”:“苹果iPhone 5 32GB”},{“型号”:“苹果iPhone 4S 16GB”},{“型号”:“苹果iPhone 5 16GB”}

我想删除{“model”:“93000”}、{“model”:“117312”}等等。。。从这个JSON数组


有人能帮我吗…?

如果你能改变制作数组的方式,那么使用模运算符就足够简单了,如下所示:

$i=0;
foreach($models1 as $mod)
{
    if(($i+1)%2==1)
    {
        $result[] = array('model'=> $mod);
    }
    $i++;
}

这将只在数组中插入奇数以开始。如果希望数组中的所有条目都显示奇数,则可以轻松修改此示例以仅输出所需内容。

正如您在问题中所看到的,您希望删除奇数索引号数组值

$i = 0;
foreach($models1 as $mod)
{
    if(($i % 2) == 0) {
        $result[] = array('model'=> $mod);
        $i++;
    }
}

上面提供的解决方案实际上很好,不过它的功能是让您可以轻松地进行比“每个奇数模型”更复杂的过滤…

您可以这样做将json转换为数组,跳过奇数值,存储在数组中,然后再次将数组转换为json

    foreach($models1 as $key => $value)
    {
        if($key%2 == 0)
        {
            $arr_new['mobiles'][] = $value;
        }
    }
    $json_new = json_encode($arr_new);
    echo $json_new;
输出如下所示

       {"mobiles":[{"model":"Apple iPhone 5c 16GB"},{"model":"Apple iPhone 5s 16GB"},{"model":"Apple iPhone 5 32GB"},{"model":"Apple iPhone 4S 16GB"},{"model":"Apple iPhone 5 16GB"}]}

如果规则只是删除带有奇数键的元素,请尝试以下操作:

// This loop keeps elements with index 0, 2, 4 ... and so on
for ($i=0;$i<count($models1);$i=$i+2){
  $finalResultArray['mobiles'][] = array('model' => $models1[$i]);
} 

echo json_encode($finalResultArray);
//此循环保留索引为0、2、4的元素。。。等等
对于($i=0;$i$models1[$i]);
} 
echo json_encode($finalResultArray);

这将只插入偶数,而不是奇数。@Fluffeh OP想要插入偶数值,请参阅
{“model”:“93000”},{“model”:“117312”}
是奇数索引数。我读到了“我想删除{“model”:“93000”},{“model”:“117312”}等等…从这个JSON数组中”作为相反,意思是他不想把它们放在那里?@Fluffeh Yes OP想删除那个奇怪的索引数值。:)1.你的问题标题听起来像汽水。2.按数字索引过滤远程数据会导致灾难,当数据更改时会发生什么?你的代码变得一文不值。你在哪里增加
$i
?@plainjane Ahhh是的,它就在那里(在我匆忙添加它之后):P