一直在查看array_intersect但不确定如何拉出找到的元素的关键位置/元素位置:
说:
$a = array('a','b');
$b = array('c','x','b','a','y','z');
我想在数组“$ b”中找到元素“a”和数组$ a中的“b”的位置
我打算在其他变量中标记或存储找到的最大元素值(即数组$ a中的“b”)。
在这个例子中,数组$ a中的'a'在数组$ b中的位置为“3”,而数组$ a中的'b'在数组$ b中的位置为'2',因此值为' a'大于'b'。然后我想将'a'的值存储在其他变量中。
欣赏它。
答案 0 :(得分:4)
您可以继续使用array_intersect()
,但与您最初的想象相反。它维护键,所以从数组开始,你想要分析的键。
<?php
$a = array('a','b');
$b = array('c','x','b','a','y','z');
// array(2) { [2]=> string(1) "b" [3]=> string(1) "a" }
$intersect = array_intersect($b, $a);
// a
echo end($intersect);
您可以从数组的输出中看到,您可以使用2和3的键。你需要做的就是获得最高的一个(我在这里使用了end()
)。
答案 1 :(得分:3)
您可以使用: Array Search
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
?>
找到元素的关键字。
或者: in_array
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
if (in_array("mac", $os)) {
echo "Got mac";
}
?>
只是找出一个数组是否包含某个值。
如果您要在多维数组中执行此操作:
答案 2 :(得分:2)
<?php
$a = array('a','b');
$b = array('c','x','b','a','y','z');
// Search single
$ai = array_search('a', $b);
$bi = array_search('b', $b);
// Loop all
foreach($a as $k){
$i = array_search($k, $b);
if($i !== false){
// $i contains key
}
}
// Generate array with indexes
$c = array();
foreach($a as $k){
$i = array_search($k, $b);
if($i !== false){
$c[$k] = $i;
}
}
// Now c is like this array('a' => 3, 'b' => 2)
答案 3 :(得分:2)
我确信有很多解决方案,但您可以循环遍历数组,当值匹配时,将该键和值添加到新数组中:
$a = array('a','b');
$b = array('c','x','b','a','y','z');
$c = array();
for($i=0;$i<count($a);$i++)
{
$a_el = $a[$i];
for($y=0;$y<count($b);$y++)
{
$b_el = $b[$y];
if($a_el == $b_el)
{
$c[$y] = $b_el;
}
}
}
var_dump($c);