我需要帮助。我有两个数组。我需要检查第一个数组中的值是否存在于秒中。数组如下:
$maindata=array(array('id'=>3),array('id'=>7),array('id'=>9));
$childata=array(array('id'=>7),array('id'=>11),array('id'=>3),array('id'=>123));
在这里,我需要检查第一个数组中的每个值是否都存在于第二个数组中。如果是,那么每次都应该返回true
其他false
。
答案 0 :(得分:3)
在这里,您可以使用in_array()
for PHP。
$maindata=array( array('id'=>3),array('id'=>7),array('id'=>9) );
$childata=array( array('id'=>7),array('id'=>11),array('id'=>3),array('id'=>123) );
foreach( $maindata as $key => $value )
{
if( in_array( $value, $childata ) )
{
echo true;
}
else
{
echo false;
}
}
你也可以删除整个if else并用一行代替。
echo ( in_array( $value, $childata ) ? true : false );
参考 - http://php.net/manual/en/function.in-array.php https://code.tutsplus.com/tutorials/the-ternary-operator-in-php--cms-24010
答案 1 :(得分:1)
检查数组是否包含值:
if (in_array($value, $array)) {
// ... logic here
}
检查数组是否包含某个键:
if (array_key_exists($key, $array)) {
// ... logic here
}
答案 2 :(得分:1)
以下代码仅在主数组的所有元素都存在于第二个数组中时返回true
,否则为false
:
$maindata=array(array('id'=>3),array('id'=>7),array('id'=>9));
$childata=array(array('id'=>3),array('id'=>7),array('id'=>11),array('id'=>123));
$match = 0;
foreach( $maindata as $key => $value ) {
if( in_array( $value, $childata ) ) {
$match++;
}
}
if($match == count($maindata)){
// return true;
} else {
// return false;
}
答案 3 :(得分:0)
if(!empty(array_intersect($childata, $maindata)))
{
//do something
}
或
$result = count(array_intersect($childata, $maindata)) == count($childata);
答案 4 :(得分:0)
使用array_column
和array_intersect
。
$first = array_column($maindata, 'id');
$second = array_column($childata, 'id');
//If intersect done, means column are common
if (count(array_intersect($first, $second)) > 0) {
echo "Value present from maindata in childata array.";
}
else {
echo "No values are common.";
}