我有两个数组 -
$x = [['email' => 'abc@gmail.com', 'id' => [1,2,3]],
['email' => 'xyz@gmail.com', 'id' => [4,5]]]
$y = ['email' => 'abc@gmail.com']
我必须在$x
数组中返回两个集合中的公共电子邮件以及ID。
输出应为 -
$z = [['email' => 'abc@gmail.com', 'id' => [1,2,3]]
怎么做? array_intersect
?但是对于array_intersect
,两个数组都应该具有相同数量的键。
答案 0 :(得分:4)
您需要使用foreach循环以传统方式执行此操作:
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php print $user_picture; ?>
<?php print render($title_prefix); ?>
<?php if (!$page): ?>
<div class="field-name-field-graphic"> <?php print render($content['field_name_field_graphic']);?> </div>
<h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2>
<?php endif; ?>
<?php print render($title_suffix); ?>
<?php if ($display_submitted): ?>
<div class="submitted">
<?php print $submitted; ?>
</div>
<?php endif; ?>
<div class="content"<?php print $content_attributes; ?>>
<?php
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
hide($content['field_name_field_graphic']);
print render($content);
?>
</div>
<?php print render($content['links']); ?>
<?php print render($content['comments']); ?>
</div>
输出:
$x = [
['email' => 'abc@gmail.com', 'id' => [1, 2, 3]],
['email' => 'xyz@gmail.com', 'id' => [4, 5]]
];
$y = array('email' => 'abc@gmail.com');
$z = array();
foreach($x as $arr){
if(in_array($arr['email'],$y) !== false){
$z[] = $arr;
}
}
print_r($z);
答案 1 :(得分:0)
您可以将array_filter()
与匿名函数一起使用,并通过use
指令传递 needle 值:
$x = [
['email' => 'abc@gmail.com', 'id' => [1,2,3]],
['email' => 'xyz@gmail.com', 'id' => [4,5]]
];
$y = ['email' => 'abc@gmail.com'];
$matched = array_filter($x, function($item) use($y) {
return $item['email'] === $y['email'];
});