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