PHP 配列比較値
{ [0]=> 文字列(9) "1_29" [1]=> 文字列(8) "1_334" [2]=> => 文字列(4) "2"
[4]=> 文字列(9) "1_30" [6]=> 文字列(4) 6" [7]=> string(4) "10" }
データ内の '-' で区切られた前の値が、データ内の '-' を除いた値と同じである場合、このデータはtake
たとえば、[2]=> string(4) "1" と同じデータに 1 があるため、1_29 は取得されません。
最終結果には '-' のみが含まれます。重複なし
{[5]=> ; string(8) "5_334" }
------解決策---------- ----------
$a=array("1_29","2_334","1","2","1_30","5_334","6","10");
var_dump($a);
$keys=array();
$result=array();
foreach($a as $val){
if(is_numeric($ val))
$keys[]=$val;
}
foreach($a as $val){
if(!is_numeric($val)){
$tmp=explode ("_",$val);
if(count($tmp)==2&&!in_array($tmp[0],$keys))
$result[]=$val;
}
}
var_dump($result);
?>
出力:
array(8) {
[0]=>
文字列(4) "1_29"
[1]=>
文字列(5) "2_334"
[2]=>
文字列(1) "1"
[3 ]=>
文字列(1) "2"
[4]=>
文字列(4) "1_30"
[5]=>
文字列(5) " 5_334"
[6]=>
文字列(1) "6"
[7]=>
文字列(2) "10"
}
配列(1) ) {
[0]=>
string(5) "5_334"
}
------解決策------------------
非常に安っぽいコードですが、結果は期待どおりです。
$Array = 配列 ('1_29', '2_334', '1', '2', '1_30', '5_334', '6', '10' ); $ReferArray = 配列(); $FixArray = 配列(); $MyArray = 配列(); foreach ( $Array as $Value ) { if (strpos ( $Value, '_' ) == false) { $ReferArray [] = $Value; } それ以外 { $FixArray [] = substr ( $Value, 0, 1 ); $MyArray [] = $Value; } } $FixArray = array_diff ( $FixArray, $ReferArray ); foreach ( $FixArray as $Key => $Value ) { echo $MyArray [$Key]; <div class="clear"></div>