无法从cakephp中的多维数组中删除数组键

时间:2015-08-06 09:24:27

标签: php arrays

我想删除包含等级0的数组索引,这里是我的数组

array(
    (int) 0 => array(
        'Gig' => array(
            'id' => '1',
            'rating' => (int) 5
        )
    ),
    (int) 1 => array(
        'Gig' => array(
            'id' => '3',
            'rating' => (int) 9
        )
    ),
    (int) 2 => array(
        'Gig' => array(
            'id' => '4',
            'rating' => '0'
        )
    )
)   

以及我做了什么

for($i = 0; $i<count($agetGigsItem); $i++)
{
if($agetGigsItem[$i]['Gig']['rating']==0)
{
unset($agetGigsItem[$i]);   
}
$this->set('agetGigsItem', $agetGigsItem);
}

我也尝试使用foreach循环,但无法解决此问题。

foreach ($agetGigsItem as $key => $value) { 

    if ($value["Gig"]["rating"] == 0) { unset($agetGigsItem[$key]); }

}

4 个答案:

答案 0 :(得分:0)

我希望您遗失$this,因此您无法访问CakePHP中的数组。

所以试试这个:

foreach ($this->$agetGigsItem as $key => $value) { 
    if ($value["Gig"]["rating"] == 0) {
      unset($this->$agetGigsItem[$key]);
    }
}

答案 1 :(得分:0)

此代码将取消设置值为0的arrey索引。

<?php

$array=array(
array(
    'Gig' => array(
        'id' => '1',
        'rating' =>5
    )
),
array(
    'Gig' => array(
        'id' => '3',
        'rating' =>9
    )
),
array(
    'Gig' => array(
        'id' => '4',
        'rating' =>0
    )
)
);

foreach($array as $a){

if($a['Gig']['rating']==0){

    unset($a['Gig']['rating']);

}

$array1[]=$a;

}

var_dump($array1);

答案 2 :(得分:0)

使用forforeach销毁实际处理的数组中的出现总是一个坏主意。每次你破坏一个出现时,循环很容易被破坏并陷入可怕的混乱。

如果要从数组中删除项目,最好创建数组的副本并在循环中处理该新数组,但从原始数组中删除项目。

所以试试这个

$tmparray = $this->agetGigsItem;   // will copy agetGigsItem into new array

foreach ($tmparray as $key => $value) { 
    if ($value["Gig"]["rating"] == 0) { 
        unset($this->agetGigsItem[$key]); 
    }
}
unset($tmparray);

答案 3 :(得分:0)

我认为你需要重新更新阵列。

foreach ($agetGigsItem as $key => $value) {
if ($value["Gig"]["rating"] != 0) 
{
unset($agetGigsItem[$key]); 
}
$this->set('agetGigsItem', $agetGigsItem);
}