Сравнение PHP-массивов - PullRequest
       12

Сравнение PHP-массивов

1 голос
/ 30 марта 2011

Я хочу сравнить два массива в php.Я не хочу делать это в целом, но блок за блоком.
вроде как

if (a[1] == b[1]){ // do something }
if (a[2] == b[2]){ // do more }

как я могу сделать это без целой связки ifs?

спасибо заранее :)

$a = array(1, 2, 3, 5);
$b = array(1, 1, 1, 1);
$c = array('something', 'something', 'and so forth');
foreach($a as $key => $value){
   if($value == $b[$key]){
      echo $c[$key]. '<br />';
    }
}

мой ответ.Сравните 2 массива, затем запустите некоторый код.активируется блоками, которые соответствуют

Ответы [ 6 ]

1 голос
/ 30 марта 2011
for($i=0;$i<sizeof(a);$i++){
  if(a[$i]==b[$i]){
    //DO SOMETHING
  }
}
1 голос
/ 30 марта 2011

хотите сравнить весь элемент массива один за другим (при условии, что оба массива имеют одинаковую длину)

foreach($a as $key => $value){
   if($value == $b[$key])
   {
     // do something
   }
   else
   {
     break;  // stop doing something and break
   }
}

, если хотите сравнить некоторые ключи

$keys = array('key1', 'key2');
foreach($keys as $value){
   if($a[$value] == $b[$value])
   {
     // true
   }
   else
   {
     // false
   }
}
0 голосов
/ 30 марта 2011

Хороший ол для цикла должен сделать свое дело.Вы можете начать с массива дел:

$arrayOfThingsToDo = array( "someFunc", "anotherFunc", "yetAnotherFunc" );
$arrayOfA = array( "one", "two", "three" );
$arrayOfB = array( "one", "not two", "three" );

function doCompare($a, $b, $f) {
   $len = count($a);
   for($i = 0; $i < $len; $i++) {
      if($a[$i] == $b[$i]) {
         $f[$i]();
      }
   }
}

Удачи!

0 голосов
/ 30 марта 2011
for ($i=0; $i < count($a) && $i < count($b); ++$i) {
    if ($a[$i] == $b[$i]){
      // this is true
    } else {
      // this is false
    }
}
0 голосов
/ 30 марта 2011
 foreach(array_intersect_assoc($a,$b) as $key => $data)){
     switch($key){
         case 1:
             //something
             break;
         case 2:
             //something
             break;
     }
 }
0 голосов
/ 30 марта 2011
$a = array(1, 3 , 5 ,6 , 7);
$b = array(3, 1, 5, 6, 8 ,9);
$array_size = min(count($a), count($b));

for ($i = 0; $i < $array_size; $i++) {
   if ($a[$i] == $b[$i]) { //you could/should check whether the index is present. 
    //some code
   }
}

Это работает только для массивов с одинаковым равномерно распределенным числовым индексом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...