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


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

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' (строка)

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