• ベストアンサー

Arrayを並びかえる!?

お世話になります。 $w をprint_rすると Array ( [0] => Array ( [email] => gmail.com ) [1] => Array ( [email] => yahoo.co.jp ) [2] => Array ( [email] => hotmail.com ) ) になり、$aは Array([0]=>yahoo.co.jp, [1]=>gmail.com, [2]=>infoseek.com) になります。 $wと$aをarray_diffをしようし、お互いに重複している値を消去し、消去するにはどうすればいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.3

$w2 = array(); for($i=0;$i<count($w);$i++){ $w2[] = $w[$i]['email']; } とすると$wを1次元にした配列$w2ができます。 $w2と$aでarray_diffを使用すればいいのではないでしょうか。

Intel_404
質問者

お礼

回答していただいた方へ ご回答していただきありがとうございました。なんとか解決できました。ありがとうございました。

その他の回答 (2)

  • mi8ko
  • ベストアンサー率0% (0/2)
回答No.2

配列の重複なら下記のやり方では? $a_2 array_unique ($a);

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

総当りチェックをして引っかかったら削除する。 それぞれの配列内に重複値がないなら以下でいけますが、 あるならちょっと工夫が必要。 <?php $w[]=array('email'=>'gmail.com'); $w[]=array('email'=>'yahoo.co.jp'); $w[]=array('email'=>'yahoo.co.jp'); $w[]=array('email'=>'hotmai.com'); $a[]=array('email'=>'yahoo.co.jp'); $a[]=array('email'=>'gmail.com'); $a[]=array('email'=>'infoseek.com'); foreach($w as $key1=>$val1){ foreach($a as $key2=>$val2){ if ($val1==$val2){ unset($w[$key1]); unset($a[$key2]); } } } print_r($a); print_r($w); ?>

関連するQ&A