在php中从数组中删除不需要的数据

时间:2013-05-02 14:23:22

标签: php slice

此代码构建一个数组:

$size = sizeof($include_quotes);
  for ($i=0; $i<$size; $i++) {
    $quotes = $GLOBALS[$include_quotes[$i]]->quote($method);
    if (is_array($quotes)) $quotes_array[] = $quotes;
  }
}   

如果我

print_r($quotes_array);

我得到以下内容:

Array ( [0] => Array ( [id] => advshipper [methods] => Array ( [0] => Array ( [id] => 1-0-0 [title] => Trade Shipping [cost] => 20 [icon] => [shipping_ts] => [quote_i] => 0 ) [1] => Array ( [id] => 2-0-0 [title] => 1-2 working days [cost] => 3.2916666666667 [icon] => [shipping_ts] => [quote_i] => 1 ) [2] => Array ( [id] => 4-0-0 [title] => 2-3 working days [cost] => 2.4916666666667 [icon] => [shipping_ts] => [quote_i] => 2 ) [3] => Array ( [id] => 8-0-0 [title] => Click & Collect [cost] => 0 [icon] => [shipping_ts] => [quote_i] => 3 ) ) [module] => Shipping [tax] => 20 ) )

在某些情况下,我只希望将字段0中的数据传递到代码的下一部分。但是,使用

 $sliced_quotes_array = array_slice($quotes_array,0,1);

仍然会返回所有结果。

获得正确的方法是什么:

Array ( [0] => Array ( [id] => advshipper [methods] => Array ( [0] => Array ( [id] => 1-0-0 [title] => Trade Shipping [cost] => 20 [icon] => [shipping_ts] => [quote_i] => 0 )

任何帮助都非常感激,因为我尝试了许多不同的方式,但没有运气。

使用以下内容仍会返回相同的结果

$testarray = array(0 => $quotes_array[0]);
print_r($testarray);

3 个答案:

答案 0 :(得分:0)

为什么不直接使用数组构造函数并明确包含所需内容:

array(0 => $quotes_array[0]);

答案 1 :(得分:0)

这是你的数组:

enter image description here

当您说“我只想将字段0中的数据传递到代码的下一部分”时,您的意思是您只希望接下来传递此数据,对吧? :

Array (
    [0] => Array (
        [id] => advshipper
        [module] => Shipping
        [tax] => 20
    )
)

这是你想要的吗?

$newArray = array();

foreach ($quotes_array[0] as $items)
{
    if (!is_array($items))
    {
        $newArray[] = $items;
    }

}

$newArray将包含该数据。

<强>更新

好的,抓住了。 你可以使用它:

$newArray = $quotes_array[0]['methods'][0];

答案 2 :(得分:0)

在对阵列进行了一些阅读并经过一些试验后,我找到了解决问题的方法。

我用过:

unset($quotes_array[0]['methods'][1]);

通过更改索引编号后,我可以删除任何我不需要的运输选项,同时仍然保持功能。