Вход | Регистрация

Информационные технологии ::

Метки: 

PHP Чтение массива.

Я
   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 символа содержимого. Почему ?
 
 
   antihacker
 
1 - 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");
   Asmody
 
2 - 05.10.17 - 09:05
(0) потому что у тебя так написано.
[$j] для строки получает $j-ый символ.

Если ты думаешь, что $root_site_list - двумерный массив, то ты ошибаешься
   Asmody
 
3 - 05.10.17 - 09:06
надо как-то так:

array_push($root_site_list
  , array("".$myrow['root_site_id'].""
    ,"".$myrow['root_site_name'].""
    )
  );
   antihacker
 
4 - 05.10.17 - 09:13
НЕ только. Но и  $i , $j  перепутал местами ))

Спаисбо !
   Asmody
 
5 - 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 />' );
}
   antihacker
 
6 - 05.10.17 - 09:22
НЕт конечно. Я применил  count($root_site_list)
   Asmody
 
7 - 05.10.17 - 09:25
(6) Для итерирования массива правильнее использовать foreach. Или array_map.
   asady
 
8 - 05.10.17 - 10:08
(5) мне конструкция
"$myrow[root_site_id]"

больше нравится чем
"".$myrow['root_site_id'].""
   antihacker
 
9 - 05.10.17 - 12:35
Тогда $myrow[root_site_id] превращеться просто в текст
   Asmody
 
10 - 05.10.17 - 12:38
(9) а так: "".$myrow['root_site_id']."" оно во что превращается?
 
  Рекламное место пустует
   antihacker
 
11 - 05.10.17 - 14:20
Ни во что. Просто туда встанет  значение массива. А это что может быть угодно. А там рельано превращаеться в "$myrow[root_site_id]"
   Asmody
 
12 - 05.10.17 - 14:40
(11) Не, чувак! Тебе надо основательно подтянуть матчасть. Вот тут, тут и, для полноты, тут.

В частности, оператор конкатенации '.' приводит аргументы к строковому представлению, а затем соединяет полученные строки. Причем, возможен такой эффект:

$a = 1.2; // $a -> 1.2 (число)
$b = 1 . 2; // $b -> '1.2' (строка)
   Asmody
 
13 - 05.10.17 - 14:42
Обработка переменных в двойных кавычках работает быстрее, чем конкатенация. Т.е.

$a = "${b} ${c} ${d}";

будет быстрее, чем

$a = $b . " " . $c . " " .$d;
   Asmody
 
14 - 05.10.17 - 14:43
Если обработка переменных в строке не требуется, лучше использовать строки в одинарных кавычках.
   Asmody
 
15 - 05.10.17 - 14:44
В (12) опечатка

$b = 1 . 2; // $b -> '12' (строка)


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует