0

我正在尝试整理我的数组,只需删除一些重复的元素等......一切都很好,当我输出它时看起来像这样

array(3) { ["addon_mat_3"]=> string(2) "15" ["addon_mat_7"]=> string(1) "7" ["addon_mat_15"]=> string(1) "9" }

以上是这段代码

foreach ($new_shopping_list_array as $columnName => $columnData) {
    if(is_numeric($columnName)){
        unset($new_shopping_list_array[$columnName]);    
    }     
    if($columnName == 'addon_id'){
        unset($new_shopping_list_array[$columnName]);    
    }     
    if($columnData == 0){
        unset($new_shopping_list_array[$columnName]);    
    }



}

但是,如果我添加如下所示的 else,我需要它,因为它从数组键中删除前 10 个字符,然后我突然将第四个元素添加到数组中,键为“0”。

array(4) { [0]=> string(1) "9" [3]=> string(2) "15" [7]=> string(1) "7" [15]=> string(1) "9" }

这段代码

foreach ($new_shopping_list_array as $columnName => $columnData) {
    if(is_numeric($columnName)){
        unset($new_shopping_list_array[$columnName]);    
    }     
    if($columnName == 'addon_id'){
        unset($new_shopping_list_array[$columnName]);    
    }     
    if($columnData == 0){
        unset($new_shopping_list_array[$columnName]);    
    }else{

        $new_columnName = substr($columnName, 10);
        unset($new_shopping_list_array[$columnName]);
        $new_shopping_list_array[$new_columnName] = $columnData;
    }



}

其他一切都很棒,除了添加的第四个元素,我做错了什么,

感谢您的任何帮助

4

1 回答 1

0

该代码应该可以工作,但您可以用更少的几行代码完成整个工作:

$flipped = array_flip($new_shopping_list_array);
foreach ($flipped as $value => &$key) {
    if($key == "addon_id" || is_numeric($key) || $value == 0) { 
        unset($flipped[$value]);
    } else {
        $key = substr($key,10);
    }
}
$new_shopping_list_array = array_flip($flipped);
于 2012-11-23T02:15:03.983 回答