2017-07-31 67 views
-1

等于键值我有两个数组:检查两个数组具有相同名称的

$arr1 = array(
    1 => 250, 
    2 => 325, 
    3 => 741, 
    4 => 690 
); 

$arr2 = array(
    1 => 110, 
    2 => 740, 
    3 => 1200, 
    4 => 500 
); 

我要检查,如果所有$arr2值小于$arr1

现在有2把钥匙[1] + [4]其小于$arr1[1] + [4]

没有foreach循环,我要返回true或false如果从任意键3210小于$arr1的同一个密钥。

+0

对不起你的问题还不清楚。想尝试。预期产出是多少? –

+1

数组总是只有4个键吗? – GrumpyCrouton

+0

你是否认为'$ arr2'中的任何键都小于'$ arr1'中的同一个键? –

回答

0

下面是做到这一点的方法之一。

$result = (bool) array_filter(array_map(function($a, $b){ 
    return $b < $a; 
}, $arr1, $arr2)); 

基于的$arr1$arr2相应值的比较内array_map返回truefalse。然后,外部array_filter将结果减少为仅包含true值。铸造结果为布尔将产生true如果在$arr2所有值都大于或等于相应的$arr1值(因为array_filter将返回一个空数组),和false如果其中任何较少。

请记住,避免一个foreach循环是而不是对于这样的事情更有效。 array_maparray_filter函数都会遍历它们给出的整个数组。如果使用foreach相反,你可以只要你找到符合你正在寻找的,在这种情况下将是foreach循环的第一反复的条件的元素跳出循环。

+0

非常感谢你,这是我需要的 – samer

+0

不客气。 –

-1

这表明在思考这个问题的一种方式。 https://iconoun.com/demo/temp_samer.php

<?php // demo/temp_samer.php 
 
/** 
 
* Compare array elements 
 
* 
 
* https://stackoverflow.com/questions/45422576/check-if-two-arrays-are-equal-key-value-with-same-name 
 
*/ 
 
error_reporting(E_ALL); 
 
echo '<pre>'; 
 

 

 
$arr1=array('1'=>250,'2'=>325,'3'=>741,'4'=>690); 
 
$arr2=array('1'=>110,'2'=>740,'3'=>1200,'4'=>500); 
 

 
foreach ($arr2 as $key => $value) 
 
{ 
 
    if ($value < $arr1[$key]) echo PHP_EOL . "KEY $key IS LOWER IN THE SECOND ARRAY"; 
 
}

+0

谢谢雷,但我不想使用foreach – samer

+0

为什么你不想使用foreach( )?这是匹配数组键的一种非常方便的方式,所以我们可以测试这些值。 –

+0

Op在“没有foreach循环”的问题中表达得很清楚,所以这并不能回答这个问题。 – GrumpyCrouton

0

这里是不使用的foreach(),但我们大多数人会使用迭代器数组元素的工作的例子。您也可以使用for()或while()循环。

<?php // demo/temp_samer.php 
 
/** 
 
* Compare array elements 
 
* 
 
* https://stackoverflow.com/questions/45422576/check-if-two-arrays-are-equal-key-value-with-same-name 
 
*/ 
 
error_reporting(E_ALL); 
 
echo '<pre>'; 
 

 

 
$arr1=array('1'=>250,'2'=>325,'3'=>741,'4'=>690); 
 
$arr2=array('1'=>110,'2'=>740,'3'=>1200,'4'=>500); 
 

 
if ($arr2[1] < $arr1[1]) echo PHP_EOL . "KEY 1 IS LOWER IN THE SECOND ARRAY"; 
 
if ($arr2[2] < $arr1[2]) echo PHP_EOL . "KEY 2 IS LOWER IN THE SECOND ARRAY"; 
 
if ($arr2[3] < $arr1[3]) echo PHP_EOL . "KEY 3 IS LOWER IN THE SECOND ARRAY"; 
 
if ($arr2[4] < $arr1[4]) echo PHP_EOL . "KEY 4 IS LOWER IN THE SECOND ARRAY";

相关问题