|   |   | 
| 
 | 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' (строка) | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |