Mysql関数「mysql_fetchassoc」によって取得する連想配列用のin_arrayなどのphp関数はありますか?
たとえば、次のような$ arrayがある場合:
_array(0=>(array(ID=>1, name=>"Smith"), 1=>(array(ID=>2, name=>"John"))
_
in_array(key,value,array)?
のようなことはできますか
または、私の場合、「1」のID値を探している場合は、in_array("ID",1,$array)
です。
これが私の解決策です。正しい方法だと思われる場合はコメントしてください。
_function in_assoc_array($key,$value,$array)
{
if (empty($array))
return false;
else
{
foreach($array as $a)
{
if ($a[$key] == $value)
return true;
}
return false;
}
}
_
これを試してください.....この関数は、関連する配列の任意の深さに使用できます。この関数とは対照的に、キー値は配列内のどこにも繰り返されません。
<?php
function is_in_array($array, $key, $key_value){
$within_array = 'no';
foreach( $array as $k=>$v ){
if( is_array($v) ){
$within_array = is_in_array($v, $key, $key_value);
if( $within_array == 'yes' ){
break;
}
} else {
if( $v == $key_value && $k == $key ){
$within_array = 'yes';
break;
}
}
}
return $within_array;
}
$test = array(
0=> array('ID'=>1, 'name'=>"Smith"),
1=> array('ID'=>2, 'name'=>"John")
);
print_r(is_in_array($test, 'name', 'Smith'));
?>
あなたの場合、isset()を使用する方が理にかなっているのではないかと思います。
isset($a[$key])
ネストされた配列で直接実行することはできません。少しネストしてから実行する必要があります。
<?php
$arr=array(0=>array('ID'=>1, 'name'=>"Smith"), 1=>array('ID'=>2, 'name'=>"John"));
foreach($arr as $arr1)
{
if(in_array(1,$arr1))
{
echo "Yes found.. and the correspoding key is ".key($arr1)." and the employee is ".$arr1['name'];
}
}
OUTPUT :
Yes found.. and the correspoding key is ID and the employee is Smith
まず、in_array
関数でhaystackとして使用する連想配列の部分を知っておく必要があります。その後、追加のコードなしでin_array
を使用できます。
値の例:
<?php
$assoc = array(1 => "Apple", 2 => "banana", 3 => "lemon", 4 => "pear");
$haystack = array_values($assoc);
echo "<p>" . print_r($assoc, true) . "</p>";
$needle = 'banana';
$find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE';
echo "<p>$needle : $find</p>";
$needle = 'cherry';
$find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE';
echo "<p>$needle : $find</p>";
?>
結果:
Array ( [1] => Apple [2] => banana [3] => lemon [4] => pear )
banana : TRUE
cherry : FALSE
クラスとメソッドを使用したサンプル式:
class VerifyInArray
{
public function getMyCollection($field, $collection)
{
$list = array();
if (count($collection)) {
foreach ($collection as $k => $val) {
$list[] = $val[$field];
}
}
return $list;
}
public function inMyArray($collection, $field, $findValue)
{
if (isset($collection[0])) {
if (array_key_exists($field, $collection[0]) == false) {
return 'no';
}
}
if (in_array($findValue, $this->getMyCollection($field, $collection))) {
return 'ok';
}
return 'no';
}
public function displayInArray($collection, $attr, $value)
{
return 'search result: '. $this->inMyArray($collection, $attr, $value);
}
}
$src = new VerifyInArray();
$collection = array(
array(
'ID' => 1,
'name' => 'Smith'
),
array(
'ID' => 2,
'name' => 'John'
)
);
echo $src->displayInArray($collection, 'ID', 2). "\n<br>" .
$src->displayInArray($collection, 'ID', 0);