2017-05-18 7 views
-1
Array 
(
    [0] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

    [1] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

    [2] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

    [3] => Array 
     (

      [stop_further_promotion] => 2 
     ) 

    [4] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

    [5] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

) 

array_search()関数を使って試してみましたが、unset()は動作しませんでした。PHPのフィールド値でサブ配列を削除する方法

フィールド値を使用してアレイを削除する方法。

私はこのような出力を表示したい: -

Array 
(
    [0] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

    [1] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

    [2] => Array 
     (
      [stop_further_promotion] => 1 
     ) 


    [3] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

    [4] => Array 
     (
      [stop_further_promotion] => 1 
     ) 

) 
+1

あなたのコードはどこにありますか? –

答えて

1

・ホープ、この最も簡単な1が参考になります。 array_search()を間違った方法で使用している可能性があります。

Try this code snippet here

$key=array_search(array("stop_further_promotion"=>2), $yourArray); 
unset($yourArray[$key]); 
print_r($yourArray); 
1

があなたの配列を反復処理し、除去与えられた条件に一致する項目でフィルタされたバージョンを返すために使用array_filter() array_filter

array_filter($array, function($v){return $v['stop_further_promotion'] != 2;}); 
+2

私はOPが 'stop_further_promotion'値で配列を削除しようとしていると思います= 2は保持しないのでおそらく' array_filter($ array、function($ v){return $ v ['stop_further_promotion']!= 2;}); ' – ArtOsi

+0

@ ArtOsiありがとう、それは私のせいです。 –

+0

うん、それは働いている...ありがとう:) – RHapani

0

で試してみてください。

$filtered_array = array_filter($original_array, function($item) { 
    return ($item['stop_further_promotion'] !== 2); 
}); 

コールバック関数がtrueを返すと、アイテムはフィルタリングされた配列に含まれています。あなたがarray_values()を使用して、インデックスを再したいかもしれませんが

http://php.net/manual/en/function.array-filter.php

array_filter()は、既存のキーを保持します。

$reindexed_array = array_values($filtered_array); 

http://php.net/manual/en/function.array-values.php

関連する問題