Legioner911
@Legioner911

Как добавить количество элементов что бы вывести два массива через array_combine?

Добрый день!
Искал искал, так и не смог найти решение в интернете.

Такая ситуация.
$arr1 = array ("имя_1", "имя_2", "имя_3", "имя_4");
	$arr2 = array ("фамилия_1", "фамилия_2", "фамилия_3", "фамилия_4");
	echo "<table>";
		foreach(array_combine($arr1, $arr2) as $ti => $pr) {
			echo "<tr>";
				echo "<td>";
		    		echo $ti;
				echo "</td>";
				echo "<td>";
					echo $pr;
				echo "</td>";
			echo "</tr>";
		}
	echo "</table>";


Всё работает до тех пор пока в массивах совпадает количество элементов.
Как только один массив больше другого появляется ошибка.

Warning: array_combine(): Both parameters should have an equal number of elements


Да, да, array_combine выдает ошибку когда в массивах разное количество элементов и не работает.

Подскажите пожалуйста как же реализовать вывод информации в таком же виде, но только что бы без ошибок?
Может какой то альтернативный способ?
Может как то добавить недостающие элементы ?

С уважением!
  • Вопрос задан
  • 818 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
почему Вы решили использовать array_combine? он создает массив в котором в качестве ключей будут значения из первого аргумента, а в качестве значений массива из второго. И когда Вы будете использовать этот алгоритм с реальными именами - у Вас будут проблемы, например:
$arr1 = array ("Вася", "Вася", "Вася", "Вася");
$arr2 = array ("Петров", "Иванов", "Сидоров", "Пупкин");
array_combine($arr1, $arr2) - в этом случае вернет не 4 записи как Вы ожидаете а одну.

Уж лучше используйте array_map , например так:
$names = array_map( function ($firstname, $lastname) {
    return [
        'fisrtname' => $firstname,
        'lastname' => $lastname
    ];
}, $arr1, $arr2));


P.S.: а вообще лучше избежать не нужных движений сразу формировать один массив с фамилиями и именами сразу
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы