2015-08-08 3 views
0

Я хочу сделать что-то вроде этогоPHP как использовать многомерный массив

$cars = array('1', '2', '3', '4', '5', '6'); 
$cars = array('7', '8', '9', '10', '11', '12'); 
$cars = array('13', '14', '15', '16', '17', '18'); 

foreach ($cars as $car){ 
    echo $car[0].'<br />'; 
    echo $car[1].'<br />'; 
    echo $car[2].'<br />'; 
    echo $car[3].'<br />'; 
    echo $car[4].'<br />'; 
    echo $car[5].'<br />'; 
    echo '----------------<br />'; 
} 

, чтобы получить результат, как этот

1 
2 
3 
4 
5 
6 
---------------- 
7 
8 
9 
10 
11 
12 
---------------- 
13 
14 
15 
16 
17 
18 

Я надеялся этот код будет работать, но я получаю ошибки как: Notice: Uninitialized string offset: 2 in C:\xampp\htdocs\....php on line 9

Я пробовал много вещей, таких как $cars = array(array('1', '2', '3', '4', '5', '6'));, но никто из них не работал для меня, поэтому, пожалуйста, если кто-нибудь может помочь мне с этим, я новичок в php, и я надеюсь, что больше от вас.

+0

Попробуйте '$ cars [] = array (...' в ваших первых 3 строках. (Добавьте '[]' после '$ cars'). Теперь вы переписываете' $ cars' каждый раз. – Sean

+0

Check out сначала урок по многомерным массивам.Если у вас есть конкретная проблема, почему код не работает, спросите об этом. Ни одна из ваших попыток не предполагает, что вы пробовали это в первую очередь. Ваша первая попытка просто переопределяет переменную почти в каждом языке программирования Вторая попытка ближе.Попробуйте https://www.developphp.com/page.php?id=229 – scrappedcola

+0

Спасибо @Sean –

ответ

4

Вы переписываете свой массив каждый раз, а не добавляете его.

Попробуйте это:

$cars[] = array('1', '2', '3', '4', '5', '6'); 
$cars[] = array('7', '8', '9', '10', '11', '12'); 
$cars[] = array('13', '14', '15', '16', '17', '18'); 

Это то же самое, как

$cars = array(
    array('1', '2', '3', '4', '5', '6'), 
    array('7', '8', '9', '10', '11', '12'), 
    array('13', '14', '15', '16', '17', '18') 
); 
+0

Ничего себе такого простого решения, и я разобрал свой разум над этим, спасибо вам, удивительный чувак, вам нужно подождать 9 минут для идеального ответа! –

+0

@ Мариа Берналь, пожалуйста, см. Мой ответ. Конкретная ошибка, которую вы получили, заключается не в перезаписи. – trogne

+0

@trogne его цикл хорош, если массив находится в правильном формате, но это не потому, что (как указано выше) он переписывается, а не добавляет – rjdown

0

Вы должны понимать, что 2 одномерный массив представляет собой массив массивов.

$cars1 = array('1', '2', '3', '4', '5', '6');
$cars2 = array('7', '8', '9', '10', '11', '12');
$cars3 = array('13', '14', '15', '16', '17', '18');
$cars2DArray = array($cars1, $cars2, $cars3)

foreach ($cars2DArray as $cars){
foreach($cars as $car){
echo $car.'<br>';
}
echo '----------------<br>'; }

+0

Большое спасибо! –

0
$cars = array(
    array('1', '2', '3', '4', '5', '6'), 
    array('7', '8', '9', '10', '11', '12'), 
    array('13', '14', '15', '16', '17', '18') 
); 

foreach ($cars as $sub) { 
    foreach($sub as $item) { 
     echo $item; 
    } 
} 

Вы перебирать каждый массив, а затем перебирать каждый элемент в этих массивах.

+0

Большое спасибо! –

0

Если вы хотите иметь разрыв строки после каждых 6 номеров, вот вам простое решение.

<?php 

$cars = array(); 
$cars= array('1', '2', '3', '4', '5', '6','7', '8', '9', '10', '11', '12','13', '14', '15', '16', '17', '18'); 
$c=0; 
foreach($cars as $car) 
{ 
    if($c==6) 
    { 
     echo '----------------<br />'; 
     $c=0; 
    } 
    echo $car . "<br>"; 
    $c++; 
} 

?> 
0

Ошибка Uninitialized string offset не из-за переопределения.

Вы получаете ту же ошибку с этим:

$cars = array('1', '2', '3', '4', '5', '6'); 

foreach ($cars as $car){ 
    echo $car[0].'<br />'; 
    echo $car[1]; 
} 

Здесь $car не является массивом, то значение массива.

Он будет работать для $car[0], потому что php знает, как интерпретировать единственное значение, но $car[1] не существует (Uninitialized).

+0

Я думаю, что, возможно, вы пропустили «многомерную» часть вопроса. – rjdown

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