- 締切済み
値の削除
アドバイスお願いします。 $tmptmp = implode(",", $tmp); for($j = 0; $j < count(tmp); $j++){ if(preg_match("/$haifu/", $tmptmp)){ $target = preg_replace("/{$haifu},?/", "", $tmptmp); echo "target : ".$target."<br>"; $tmptmp = $target; } } // 上のプログラムは // $haifu と $tmptmp が一致するなら一致した$haifuを削除する // $tmptmp == 000000,000001 の場合 // $haifu == 000001 ならば // $tmptmp から $haifu が削除されて // $target == 000000 となる。 また、もし、 // $tmptmp == 000000,000001,000002 // $haifu == 000000 // $target = 000001,000002 となる。問題は$haifuの値が複数存在する場合。 また、新たに$tmptmpが更新されてしまうので削除された値ではなく、最初の$tmptmpと$haifuとの比較になってしまいます。 // $tmptmp == 000000,000001,000002 // $haifu == 000001 // $target = 000000,000002 となってしまう。 目的は、$haifu がいくつ存在しても $tmptmp == 000000,000001,000002 $haifu == 000000 $target == 000001,000002 次に、$targetの値と$haifuを比較して $haifu == 000001 $target == 000002 となるプログラムにしたいのですが、 うまくいきません。アドバイスお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- karumakaruma
- ベストアンサー率65% (65/100)
1です。 >if($haifuが空の時){ >unset($tmp[array_search($haifu,$tmp)]); >print_r($tmp); >} $haifuが空の時じゃなくって空じゃない時ですよね? #$haifusがDBから取ってきた$haifuの集まり foreach ( $haifus as $key=>$haifu ){ unset($tmp[array_search($haifu,$tmp)]); } print_r($tmp); これだけでいけませんか?
- karumakaruma
- ベストアンサー率65% (65/100)
$haifuが複数の時の処理はどのようにされてる のでしょう? #$haifuが配列になっていて、ループしてる? あと、配列から要素を削除したい場合は unset()が使えますよ。 unset($tmp[array_search($haifu,$tmp)]); という使い方です。 #当然無ければ削除されません。 ex) $tmp[] = "00000"; $tmp[] = "00001"; $tmp[] = "00002"; $haifu = "00001"; unset($tmp[array_search($haifu,$tmp)]); print_r($tmp); ----- 結果 ------ Array ( [0] => 00000 [2] => 00002 )
補足
$haifuはデータベースからとってきて るーぷしています。 if($haifuが空の時){ // $tmp はパラメータ情報 // パラメータ情報からデータベース検索を行っていて // もし、パラメータがデータベース内に存在するならばそのパラメータの情報をを削除していき、残ったものはデータベース内には存在しないということになるので その値をエラーとして表示させる事が目的です。 unset($tmp[array_search($haifu,$tmp)]); print_r($tmp); } プログラムの目的は以上です。 スイマセン・・ なぜか、うまくいきません・・。