Помогите пожалуйста сформировать строку

voland

Guest
Помогите пожалуйста сформировать строку

Есть 5 массивов из которых надо выбрать значения повторяющиеся во всех. Например в каждом массиве есть цифра 1 (Массивы состоят и чисел)
Насколько я понял по мануалу это надо делать функцией
array_intersect();
Но я должен в эту функцию подставить имена масивов разделенные запятой, а поскольку не все массивы в результате работы скрипта будут заполненны, то подсавить я должен только те, в которых есть значения. Так вот я никак не могу подставить их в неё... Помогите пожалуйста, а то я уже потерял надежду!
 

[DAN]

Старожил PHPClub
сравнивай последовательно все непустые массивы с результирующим.
 

voland

Guest
Если честно, то именно это я и не могу сделать...
PHP:
$a1 = array(1, 3, 6, 7, 8, 10);
$a2 = array(3, 7, 8, 10);
$a3 = array(1, 6, 7, 8);
$a4 = array(3, 8);
$a5 = array(6, 8, 10);
Если ситуация такая, то я могу просто тупо подставить их в функцию
array_intersect($a1, $a2, $a3, $a4, $a5);
И получить значения, которое будет в каждом из массивов, но у меня могут быть не все массивы, например $a1 и $a3 будут пустыми, их то я подставить не могу... Может я просто не правильно понял тебя, но ты предлагаешь проверять по 2 массива, цикл с проверкой на пустоту и при втором не пустом массиве подставлять их в функцию? Если я понял правильно, то я все равно не знаю, как подставить их имена в функцию! Подскажите именно, как можно подставить имена, а все проверки и сравнивание дело десятое. Кстати, у меня есть чувство, что это похоже на генерацию SQL запроса, но там я подставляю значения переменных, а не их имена!
 

voland

Guest
Ну пожалуйста помогите хоть чем-нибудь!
 

Demiurg

Guest
подставляй сначала первый со вторым, потом результат с третим и так далее.
 

Crazy

Developer
Мечта извращенца:

PHP:
<?php

$a1 = array(1, 3, 6, 7, 8, 10); 
$a2 = array(3, 7, 8, 10); 
$a3 = array(1, 6, 7, 8); 
$a4 = array(3, 8); 
$a5 = array(6, 8, 10);

function intersect_all($baseName,$min,$max) {
  $temp = '';
  for($i=$min; $i<=$max; $i++) {
    $varName = $baseName.$i;
    if (isset($GLOBALS[$varName]) && count($GLOBALS[$varName])>0)
      $temp .= ",\$GLOBALS['$varName']";
  }
  if ($temp==null)
    return array();
  else {
    $temp = '$res = array_intersect('.substr($temp,1).');';
    eval($temp);
    return $res;
  }
}

$arr = intersect_all('a',1,10);
print_r($arr);

?>
 

voland

Guest
Crazy
Огромное сппасибо, вот только один вопрос $min, $max
Это максимальные значения массива или что?
 

voland

Guest
Я наверное идиот, но все же...
Warning: Wrong parameter count for array_intersect() in ПУТЬ\test.php(186) : eval()'d code on line 1
 

voland

Guest
Извините пожалуйста, за тупой вопрос сначаланаписал потом подумал, забыл проверку, если массив всего один :)
Всем ОГРОМНОЕ спасибо!!!
 

MXM

Guest
У меня вопрос по теме:
Ситуация: массив, как определенное значение элемента массива сверить с другим значением элемента, и, при совпадении вывести определенную инфу? Массив, к примеру,
0;0;0;1;0;0;1. Нужно сверить 3-ие значение элемента массива с 6-ым.
Код:
PHP:
$fp=fopen("mxm.txt","r");
$fl=0;
$i=0;
while(!feof($fp))
{$cars[$i]=fgets($fp,10000);
 $pt=explode(";",$cars[$i]);
 if(($pt[6]==1)&&($pt[14]==$pt[6])) $fl=1;
 $i++;
 }
fclose($fp);

if( $fl>0 ) { include("spec1.phtml"); }
else  { include("spec2.phtml"); }
 
Сверху