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」で配列に4番目の要素が突然追加されます。

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番目の要素を除けば、他のすべては素晴らしいです。私は何が間違っていますか、

助けてくれてありがとう

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 に答える