|
PHP Чтение массива. | ☑ | ||
---|---|---|---|---|
0
antihacker
05.10.17
✎
08:49
|
Всем привет !
Вот работающий код for ($i = 0; $i < 5; $i++) { for ($j=0; $j < 2; $j++) { echo("".$root_site_list[$i][$j].""); } echo '<br />'; } ?> Но почем то это -echo("".$root_site_list[$i][$j]."") выодит только первые 2 символа содержимого. Почему ? |
|||
1
antihacker
05.10.17
✎
09:00
|
Аданные добавляю так
$result = mysql_query("SELECT * FROM dbroot_site_tbl"); $root_site_list = array(); while($myrow=mysql_fetch_array($result)) { //$root_site_list=array("".$myrow['root_site_id']."","".$myrow['root_site_name'].""); array_push($root_site_list,"".$myrow['root_site_id']."","".$myrow['root_site_name'].""); } array_push($root_site_list,"Rear Window","Alfred Hitchcock"); array_push($root_site_list,"Full Metal Jacket","Stanley Kubrick"); |
|||
2
Asmody
05.10.17
✎
09:05
|
(0) потому что у тебя так написано.
[$j] для строки получает $j-ый символ. Если ты думаешь, что $root_site_list - двумерный массив, то ты ошибаешься |
|||
3
Asmody
05.10.17
✎
09:06
|
надо как-то так:
array_push($root_site_list , array("".$myrow['root_site_id']."" ,"".$myrow['root_site_name']."" ) ); |
|||
4
antihacker
05.10.17
✎
09:13
|
НЕ только. Но и $i , $j перепутал местами ))
Спаисбо ! |
|||
5
Asmody
05.10.17
✎
09:20
|
И вообще, ожидать, что ты получишь из базы именно 5 записей, как-то эээ... непредусмотрительно.
Я бы переписал это всё вот так: $result = mysql_query("SELECT * FROM dbroot_site_tbl"); $root_site_list = array(); while($myrow = mysql_fetch_array($result)) { $root_site_list[] = array( 'root_site_id' => "".$myrow['root_site_id']."" , 'root_site_name' => "".$myrow['root_site_name']."" ); } $root_site_list[] = array( 'root_site_id' => "Rear Window" , 'root_site_name' => "Alfred Hitchcock" ); $root_site_list[] = array( 'root_site_id' => "Full Metal Jacket" , 'root_site_name' => "Stanley Kubrick" ); foreach($root_site_list as $root_site) { echo( $root_site['root_site_id' ); echo( $root_site['root_site_name' ); echo( '<br />' ); } |
|||
6
antihacker
05.10.17
✎
09:22
|
НЕт конечно. Я применил count($root_site_list)
|
|||
7
Asmody
05.10.17
✎
09:25
|
(6) Для итерирования массива правильнее использовать foreach. Или array_map.
|
|||
8
asady
05.10.17
✎
10:08
|
(5) мне конструкция
"$myrow[root_site_id]" больше нравится чем "".$myrow['root_site_id']."" |
|||
9
antihacker
05.10.17
✎
12:35
|
Тогда $myrow[root_site_id] превращеться просто в текст
|
|||
10
Asmody
05.10.17
✎
12:38
|
(9) а так: "".$myrow['root_site_id']."" оно во что превращается?
|
|||
11
antihacker
05.10.17
✎
14:20
|
Ни во что. Просто туда встанет значение массива. А это что может быть угодно. А там рельано превращаеться в "$myrow[root_site_id]"
|
|||
12
Asmody
05.10.17
✎
14:40
|
(11) Не, чувак! Тебе надо основательно подтянуть матчасть. Вот тут, тут и, для полноты, тут.
В частности, оператор конкатенации '.' приводит аргументы к строковому представлению, а затем соединяет полученные строки. Причем, возможен такой эффект: $a = 1.2; // $a -> 1.2 (число) $b = 1 . 2; // $b -> '1.2' (строка) |
|||
13
Asmody
05.10.17
✎
14:42
|
Обработка переменных в двойных кавычках работает быстрее, чем конкатенация. Т.е.
$a = "${b} ${c} ${d}"; будет быстрее, чем $a = $b . " " . $c . " " .$d; |
|||
14
Asmody
05.10.17
✎
14:43
|
Если обработка переменных в строке не требуется, лучше использовать строки в одинарных кавычках.
|
|||
15
Asmody
05.10.17
✎
14:44
|
В (12) опечатка
$b = 1 . 2; // $b -> '12' (строка) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |