Предупреждение: array_combine (): оба параметра должны иметь равное количество элементов

У меня проблема в array_combine()

Предупреждение: array_combine (): Оба параметра должны иметь равное количество элементов в PATH в строке X

Эта ошибка выводится на следующую строку:

 foreach(array_combine($images, $word) as $imgs => $w) { //do something } 

Как я могу это исправить?

Solutions Collecting From Web of "Предупреждение: array_combine (): оба параметра должны иметь равное количество элементов"

Эта ошибка появляется, когда вы пытаетесь объединить два массива с неравной длиной. В качестве примера:

 Array 1: Array (A, B, C) //3 elements Array 2: Array (1, 2, 3, 4) //4 elements 

array_combine() не может объединить эти два массива и будет вызывать предупреждение.


Существуют различные способы приблизиться к этой ошибке.

Вы можете проверить, имеют ли оба массива одинаковое количество элементов и только объединяют их, если они это делают:

 <?php $arrayOne = Array("A", "B", "C"); $arrayTwo = Array(1, 2, 3); if(count($arrayOne) == count($arrayTwo)){ $result = array_combine($arrayOne, $arrayTwo); } else{ echo "The arrays have unequal length"; } ?> 

Вы можете объединить два массива и использовать только столько элементов, сколько у меньшего:

 <?php $arrayOne = Array("A", "B", "C"); $arrayTwo = Array(1, 2, 3); $min = min(count($arrayOne), count($arrayTwo)); $result = array_combine(array_slice($arrayOne, 0, $min), array_slice($arrayTwo, 0, $min)); ?> 

Или вы также можете просто заполнить недостающие элементы:

 <?php $arrayOne = Array("A", "B", "C"); $arrayTwo = Array(1, 2, 3); $result = []; $counter = 0; array_map(function($v1, $v2)use(&$result, &$counter){ $result[!is_null($v1) ? $v1 : "filler" . $counter++] = !is_null($v2) ? $v2 : "filler"; }, $arrayOne, $arrayTwo); ?> 

Примечание. Во всех примерах вы всегда хотите убедиться, что массив ключей имеет только уникальные элементы! Потому что иначе PHP просто перезапишет элементы одним и тем же ключом, и вы сохраните только последний.