0

PHP初心者

PHPセッション配列から値を持つインデックスを削除したい。私はこのコードを使用しています

$max=count($_SESSION['Item']);

for($i=0;$i<$max;$i++){

 if(strpos($_SESSION['Item'][$i]['Name'],'Shipping')!== false)
 {
  unset($_SESSION['Item'][$i]);
  break;
 }

値が配列の最後のインデックスに存在する場合、正常に機能します。しかし、その間に存在する場合。まったく機能しません。どこが間違っているのですか?

4

3 に答える 3

1

foreachの代わりに を使用することをお勧めしforます。このようにして、配列のキーを int のみにすることができます。そして、すべての配列項目をループすることが保証されています

foreach($_SESSION['Item'] as $key => $value) { 
    if (strpos($value['Name'],'Shipping')!== false) {
        unset($_SESSION['Item'][$key]);
    }
}

指摘したように、ブレークはループを停止します。したがって、単一のエントリのみを削除する場合は、ブレークを追加する必要があります

于 2013-10-02T13:11:51.730 に答える
0
 if(strpos($_SESSION['Item'][$i]['Name'],'Shipping')!== false)
 {
  unset($_SESSION['Item'][$i]);
 }
于 2013-10-02T13:13:11.437 に答える