2015-05-27 4 views
0

Извините, что спросить, это только для моего понимания!

Я только начинаю изучать php.

Я добавил некоторые значения от другого метода к массиву, и
он пришел к странной проблеме, что я не могу найти ответ в Интернете.
(извините, если это глупо, я просто хочу знать, почему это сделать.)

Мой PHP/HTML код:

<?php 
$test[] = 1; 
$test += array('2','3','4'); 
$test += array('4in4',5 => '5'); 
$test[] = 6; 
$test[] += 7; 
?> 
<!doctype html> 
<html lang="fr-CA" > 
<head> 
<meta charset="UTF-8"> 
<body> 
<?php echo '<h1>Test de Tableau</h1>','<br>', 
    '$test[0] = ',$test[0],'<br>', 
    '$test[1] = ',$test[1],'<br>', 
    '$test[2] = ',$test[2],'<br>', 
    '$test[3] = ',$test[3],'<br>', 
    '$test[4] = ',$test[4],'<br>', 
    '$test[5] = ',$test[5],'<br>', 
    '$test[6] = ',$test[6],'<br>', 
    '$test[7] = ',$test[7],'<br>', 
    '<h4>count = ',count($test),'/8</h4>'; ?> 
</body> 


И вот результат:


Test де Tableau

$ тест [0] = 1
$ тест [1] = 3
$ тест [2] = 4
$ тест [3] =
Примечание: Не определено смещение: 3 в /opt/lampp/htdocs/mhx/test/index.php на линии 26
$ тест [ 4] =
Примечание: Undefined смещение: 4 в /opt/lampp/htdocs/mhx/test/index.php на линии 27
$ тест [5] = 5
$ тест [6] = 6
$ test [7] = 7
кол-во = 6/8

Спасибо!
MHX

+0

Какая проблема, что вы хотите знать? –

+0

.. Повторите попытку .. Я хочу знать, почему возникает проблема смещения первого параметра массива (первая, вторая), когда я использую «+ =». – MHX

+0

Вы понимаете, что '+ =' является оператором сложения, а не оператором объединения массива справа? – frz3993

ответ

2

Это, возможно, уже был дан ответ на это сообщение: + operator for array in PHP?

По сути, вот что происходит. Вы инициализирован ваш массив:

$test = [0 => 1]; 

Далее, вы добавляете новый массив к нему:

[0 => '2', 1 => '3', 2 => '4']; 

Первый индекс уже существует, поэтому он пропустил дает нам:

$test = [0 => 1, 1 => '3', 2 => '4']; 

Теперь вы добавляете еще один массив:

[0 => '4in4', 5 => '5']; 

Опять же, первый индекс существует, так что мы получаем:

$test = [0 => 1, 1 => '3', 2 => '4', 5 => '5']; 

К настоящему времени, вы можете увидеть, что смещения 3 и 4 отсутствуют, поэтому ваши уведомления выше. Кроме того, внутренний указатель теперь равен 6, поскольку последний добавленный элемент был равен 5.

Вы затем добавить 6, затем 7, что дает нам окончательный массив:

$test = [0 => 1, 1 => '3', 2 => '4', 5 => '5', 6 => 6, 7 => 7]; 

Я надеюсь, что это помогает.

EDIT: При добавлении еще одного элемента в массив, вы можете просто написать это:

$test[] = 1; 

Если вам нужно объединить два массива, посмотрите на array_merge():

$test = array_merge($test, [1, 2, 3]); 

Ура!

+0

нормально, поэтому, если индекс уже существует, он не имеет следующего, он пропускает его Это ясно. Thx alot! – MHX

+0

@MHX Нет проблем. Просто будьте ясны, если вы объединяете два массива с помощью знака плюс (+), любые индексы из правого массива, которые уже существуют в левой части, будут пропущены Если вы добавите в массив (т. Е. $ Test [] = 1), он будет добавлен в качестве следующего индекса, а внутренний указатель будет увеличен. – versalle88

Смежные вопросы