Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > сравнение масивов


Автор: Sniper 16.10.2007, 12:43
помогите со сравнением двух массивов.
Сравнить нужно так :
все элементы первого массива с первым элементом второго, потом все элементы первого массива со вторым элементом второго.

Автор: Папараццы 16.10.2007, 15:08
Пусти двойной цикл из количество элементов массива

for($i=0;$i<count($massiv);$i++)
{ 
   if($massiv[$i]>massiv2['0']) { // for example..
  }
}

Вопрос в том как ты хочешь сравнивать эти массивы ? Найт самый болшой элемент или самый маленкий или вообше все ?  

Автор: Sniper 16.10.2007, 15:41
массив у меня из строк. в первом у меня куча строк, а во втором всего две (может быть больше)
мне нужно найти элементы в большом массиве которые содержат эти две строки.

Автор: mishaSL 16.10.2007, 17:08
Sniper, если я правильно понял, то где-то так:
Код

<?php

$arr1 = array('123', 'wqer', 'sadfsdaf','vcbfsg','sd','dsf');
$arr2 = array('sadfsdaf','vcbfsg');

function whereMyElement(& $arr1, & $arr2)
{
    if (!is_array($arr1) || !is_array($arr2)) {
        return false;
    }
    $resultArr = array();
    foreach($arr2 as $v) {
        if (($key = array_search($v, $arr1)) !== false) {
            $resultArr[] = $key;
        }
    }
    
    return $resultArr;
    
}

$res = whereMyElement($arr1, $arr2);
if ($res === false) {
    print 'Ошибка';
} elseif (!empty($res)) {
    print 'Массив $arr1 сожержит элементы массива $arr2. Вот ключи массива $arr1, где они содержатся: ' . print_r($res, true);
} else {
    print 'Массив $arr1 не сожержит элементы массива $arr2.';
}

?>

Автор: SelenIT 16.10.2007, 17:25
...а что, http://php.net/array_intersect отменили?

Автор: mishaSL 16.10.2007, 17:34
Цитата(SelenIT @  16.10.2007,  17:25 Найти цитируемый пост)
...а что, array_intersect отменили? 

...ух блин, что-то у меня из головы то и вылетела эта функция smile 

Автор: Sniper 17.10.2007, 14:34
вродебы разобрался, но тут ещё одна проблема.
Получил я два массива один со значениями (arrvalue), а другой(result) c позициями нужных мне значений в массиве arrvalue.
Соответственно нужно используя второй массив вытащить нужные мне элементы... мда.. объяснил.. smile 
Так дубль два
arrvalue ( [] => 210 [1] => 64 [2] => '20000000' [3] => '200000' [4] => '0'...)
result  Array ( [0] => Array ( [0] => 12 ) [1] => Array ( [0] => 42 ) [2] => Array ( ) [3] => Array ( ) )
второй массив показывает что нужные мне данные хранятся в ячейках 12 и 42 массива arrvalue как мне их вытащить?  smile 

Вообще это наверное какое-то корявое решение моей задачи. 

p.s Если я напишу общую задачу я могу расчитывать на подсказку(словами, код то я сам могу написать) более красивого метода решения..? ;-)

Автор: mishaSL 17.10.2007, 14:49
Цитата(Sniper @  17.10.2007,  14:34 Найти цитируемый пост)
Если я напишу общую задачу я могу расчитывать на подсказку(словами, код то я сам могу написать) более красивого метода решения..? ;-)

Пожалуй так будет гораздо лучше и понятнееsmile 

Автор: Sniper 17.10.2007, 14:51
сюда или отдельной темой?

Автор: SelenIT 17.10.2007, 14:56
Лучше отдельной, имхо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)