есть 4 массива: $films - Фильмы, $actors - Актеры, filmsActors - Фильмы в которых играет роль тот или иной актер и массив $users - это актеры, где мы запрашуем найти фильм(фильмы) с участием этих актеров! как через цикл foreach сравнить актеров($users) и массив ($filmsActors) вывести соответсвенную информацию? тоесть Код (PHP): //Фильмы: $films = array( 1=>array('id'=>1, 'title'=>'Том и Джери', 'year'=>2004), 2=>array('id'=>2, 'title'=>'Кот в сапогах', 'year'=>2013), 3=>array('id'=>3, 'title'=>'Доктор Айболит', 'year'=>2012), 4=>array('id'=>4, 'title'=>'Мачо и Ботан', 'year'=>2013), 5=>array('id'=>5, 'title'=>'Универ', 'year'=>2008), ); //Aктеры: $actors = array( 1=>array('id'=>1, 'name'=>'Петя'), 2=>array('id'=>2, 'name'=>'Лена'), 3=>array('id'=>3, 'name'=>'Света'), 4=>array('id'=>4, 'name'=>'Коля'), 5=>array('id'=>5, 'name'=>'Вася'), 6=>array('id'=>6, 'name'=>'Маша') ); //Фильмы в которых актеры играют свою роль: $filmsActors = array( 1=>array('id'=>1, 'film'=>'Том и Джери', 'actor'=>'Вася'), 2=>array('id'=>2, 'film'=>'Том и Джери', 'actor'=>'Маша'), 3=>array('id'=>3, 'film'=>'Универ', 'actor'=>'Петя'), 4=>array('id'=>4, 'film'=>'Универ', 'actor'=>'Вася'), 5=>array('id'=>5, 'film'=>'Универ', 'actor'=>'Маша'), 6=>array('id'=>6, 'film'=>'Мачо и ботан', 'actor'=>'Коля'), 7=>array('id'=>7, 'film'=>'Мачо и ботан', 'actor'=>'Вася'), 8=>array('id'=>8, 'film'=>'Доктор Айболит', 'actor'=>'Света'), 9=>array('id'=>9, 'film'=>'Доктор Айболит', 'actor'=>'Петя'), 10=>array('id'=>10, 'film'=>'Доктор Айболит', 'actor'=>'Лена'), 11=>array('id'=>11, 'film'=>'Доктор Айболит', 'actor'=>'Коля'), 12=>array('id'=>12, 'film'=>'Кот в сапогах', 'actor'=>'Вася'), 13=>array('id'=>13, 'film'=>'Кот в сапогах', 'actor'=>'Петя'), ); //Запрашуемые актеры: $users = array( 1=>array('id'=>1, 'name'=>'Вася'), 2=>array('id'=>2, 'name'=>'Петя'), ); Вывод информации (Так как Вася и Петя играли вместе свои роли только в двох фильмах то результат): id='2' title='Кот в сапогах' year='2013' id='5' title='Универ' year='2008' Помогите решить эту задачу пожалуйста!
Ну как. Берете $users разбираете его через foreach. Далее внутри пишем еще один foreach и уже разбираем $filmsActors. Сравниваем ключи и значения и вуаля, получаем, что хотим.
Код (Text): foreach($users as $value1) { foreach($filmsActors as $value2) { if($value1['name'] == $value2['actor']) echo $value2['film'].'<br/>'; } } что то не выходит!
Все верно, почему не выходит, тебе выводит: Том и Джери ---- Вася Универ ---- Вася Мачо и ботан ---- Вася Кот в сапогах ---- Вася Универ ---- Петя Доктор Айболит ---- Петя Кот в сапогах ---- Петя Тебе нашло все фильмы с Васей и Петей, что не так?
нет, Вы немножко не поняли вопрос, мне нужно найти фильм или фильмы, в которых играли роль вместе вася и петя, тоесть: ID - 5, Title - Универ, Year - 2008 ID - 2, Title - Кот в сапогах, Year - 2013 и кстати, какими тегами вставлять PHP код на вашем форуме??? а то, как то не красиво выходит(
решение у меня есть, но мне бы хотелось как бы упростить код, может что-то подскажите? Код (PHP): //Находим все фильмы с данными актерами $result = array(); for ($i = 1; $i < count($filmsActors)+1; $i++) for ($j = 1; $j < count($users)+1; $j++) if ($users[$j]["name"] == $filmsActors[$i]["actor"]) if (isset($result[$filmsActors[$i]["film"]])) $result[$filmsActors[$i]["film"]]++; else $result[$filmsActors[$i]["film"]] = 1; //Выбираем только те, в которых есть все перечисленные актеры foreach ($result as $k => $v) if ($v == count($users)) foreach ($films as $v1) if ($v1["title"] == $k) echo "ID - ".$v1["id"].", Title - ".$v1["title"].", Year - ".$v1["year"]."</br>\r\n";