2

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

以下代码用于它。

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

}

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

echo json_encode($finalResultArray);

然后结果是

{"mobiles":[{"model":"Apple iPhone 5c 16GB"},{"model":"93,000"},{"model":"Apple iPhone 5s 16GB"},{"model":"117,312" },{"model":"Apple iPhone 5 32GB"},{"model":"94,280"},{"model":"Apple iPhone 4S 16GB"},{"model":"82,000"},{"型号":"Apple iPhone 5 16GB"},{"型号":"93,000"}]}

我想像这样打印这个数组

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

我想从这个 JSON 数组中删除 {"model":"93,000"},{"model":"117,312"} 等...

谁能帮我...????

4

5 回答 5

2

正如您在问题中看到的那样,您想要删除奇数索引号数组值。

$i = 0;
foreach($models1 as $mod)
{
    if(($i % 2) == 0) {
        $result[] = array('model'=> $mod);
        $i++;
    }
}
于 2013-10-03T05:08:58.240 回答
0

上面提供的解决方案实际上很好,但是尽管它具有 array_filter功能,因此您可以轻松地进行更复杂的过滤,而不仅仅是“每个奇怪的模型”......

于 2013-10-03T05:14:22.540 回答
0

如果您可以更改制作数组的方式,那么使用模数运算符将非常简单,如下所示:

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

这只会将奇数插入数组以开始。如果您想拥有数组中的所有条目但只显示奇数,您可以轻松修改此示例以仅输出您需要的内容。

于 2013-10-03T05:08:46.143 回答
0

您可以这样做将 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"}]}
于 2013-10-03T05:17:21.667 回答
-1

如果规则只是删除带有奇数键的元素,那么试试这个:

// 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);
于 2013-10-03T05:24:34.543 回答