Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблема с массивом
 
 автор: admin   (16.07.2012 в 18:11)   письмо автору
 
 

Доброго времени суток
создаю массив
while ($img=mysql_fetch_array($image)){
$i = ++$i;
$photo[$i]=$img['id'];
}

в итоге получаю
Array ( [0] => 12 [1] => 11 [2] => 10 [3] => 9 ) 

а нужно
Array ( [1] => 12 [2] => 11 [3] => 10 [4] => 9 ) 

  Ответить  
 
 автор: cheops   (16.07.2012 в 18:18)   письмо автору
 
   для: admin   (16.07.2012 в 18:11)
 

Попробуйте заменить конструкцию
$i = ++$i;

просто на
$i++;

  Ответить  
 
 автор: admin   (16.07.2012 в 18:19)   письмо автору
 
   для: cheops   (16.07.2012 в 18:18)
 

Array ( [0] => 12 [1] => 11 [2] => 10 [3] => 9 ) 

тот же результат

  Ответить  
 
 автор: cheops   (16.07.2012 в 18:24)   письмо автору
 
   для: admin   (16.07.2012 в 18:19)
 

А если перед циклом while явно инициализировать переменную $i = 0 (что полезно всегда и в любых языках программирования?).

  Ответить  
 
 автор: admin   (16.07.2012 в 18:32)   письмо автору
 
   для: cheops   (16.07.2012 в 18:24)
 

вот теперь все работает
Array ( [1] => 12 [2] => 11 [3] => 10 [4] => 9 ) 

только теперь при переносе массива на другую страницу
$_SESSION['photo'] = implode("|", $photo);

на другой странице выдает ту же проблему
Array ( [0] => 12 [1] => 11 [2] => 10 [3] => 9 ) 

  Ответить  
 
 автор: confirm   (16.07.2012 в 18:42)   письмо автору
 
   для: admin   (16.07.2012 в 18:32)
 

implode объединяет значение массива, без его ключей! Это не проблема, это не понимание с вашей стороны.

  Ответить  
 
 автор: admin   (16.07.2012 в 18:47)   письмо автору
 
   для: confirm   (16.07.2012 в 18:42)
 

почему бы попросту не объяснить? зачем столько критики, я не нашел другой функции в интернете, везде только она...

  Ответить  
 
 автор: confirm   (16.07.2012 в 18:56)   письмо автору
 
   для: admin   (16.07.2012 в 18:47)
 

Это не критика. Я не php-критик, я вам просто советую читать внимательно о функциях, чтобы не писать так. Я вам про mysql_fetch_array() уже второй раз второй день подряд говорю, а вам побоку. А разве трудно вникнуть, что вы необдуманно ее используете? Ведь описание гласит ясно на русском. И кроме этого это не одна функция, которой можно получить строку из ресурса.
И между прочим, я не нашел другой функции в интернете, везде только она..., это не совсем так. Если вам нужно передать на другую страницу, то есть сессия, в которую вы можете поместить массив. А также, если можно передать этот массив как GET параметры, то есть функция http_build_query(), вот пример:
<?
$a 
= array(1=>12131415);
echo 
http_build_query($a);

Как видите сохраняется массив со всеми ключами, а на другой странице получите массив $_GET, уж что это такое думаю знаете.
И никакой критики, просто, если вам говорят это плохо, то хотя бы интересуйтесь почему. Читать и изучать за вас никто не будет, и объяснить все просто невозможно.

  Ответить  
 
 автор: confirm   (16.07.2012 в 18:28)   письмо автору
 
   для: admin   (16.07.2012 в 18:11)
 

mysql_fetch_array - прочтите и запомните, что данную функцию так использовать ЭТО ПЛОХО!
Ну сколько раз говорить об этом?

А какая разница с какого индекса массив начинается, это принципиально? И не надо приравнивать:

<?
$i 
0;
while(
$i 5) {
  ++
$i;
  echo 
$i.'<br>';  
}

Получите 1, 2, 3...
Собственно зачем массив промежуточный?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования