Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Массив php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как начать масив не с 0 а с 1
vlad2020
Отправлено: 01 Августа, 2016 - 22:22:36
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




Задача такова, нужно чтобы массив начинался с 1.

к примеру у меня массив из 5 объектов

$arr = array('помидор', 'огурец', 'груша', 'банан', 'абрикос');

я могу задать что "помидор" будет первым элементом а не нулевым, но вот в чем загвоздка, при подсчете всех элементов
$summ = count($arr);

мне выдает число 6 а не 5 то есть ноль тоже считается 0,1,2,3,4,5,

как сделать начало массива с 1 и без подсчета 0.
 
 Top
Строитель
Отправлено: 01 Августа, 2016 - 22:29:57
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




vlad2020 пишет:
как сделать начало массива с 1 и без подсчета 0.
PHP:
скопировать код в буфер обмена
  1. $arr = [
  2.     1 =>'помидор',
  3.     2 =>'огурец',
  4.     3 =>'груша',
  5.     4 =>'банан',
  6.     5 =>'абрикос'
  7. ];
  8.  
  9. echo count($arr); // 5
  10.  
  11. echo $arr[1]; // помидор
 
 Top
vlad2020
Отправлено: 01 Августа, 2016 - 22:43:15
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




Строитель пишет:
vlad2020 пишет:
как сделать начало массива с 1 и без подсчета 0.
PHP:
скопировать код в буфер обмена
  1. $arr = [
  2.     1 =>'помидор',
  3.     2 =>'огурец',
  4.     3 =>'груша',
  5.     4 =>'банан',
  6.     5 =>'абрикос'
  7. ];
  8.  
  9. echo count($arr); // 5
  10.  
  11. echo $arr[1]; // помидор


да вы задали каждому элементу ключи, а как быть если у меня массив формируется из базы данных

$arr = array();
$result = mysql_query("SELECT `таблица` FROM `база данных`");
while($myrow = mysql_fetch_assoc($result)) {
$arr[] = $myrow['таблица'];
}

то есть объекты то добавляются, то удаляются.
 
 Top
Строитель
Отправлено: 01 Августа, 2016 - 22:46:08
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




vlad2020, тогда скажите, а зачем вам понадобилось менять индекс массива на единицу?
 
 Top
vlad2020
Отправлено: 01 Августа, 2016 - 22:54:58
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




Строитель пишет:
vlad2020, тогда скажите, а зачем вам понадобилось менять индекс массива на единицу?



Массив с помидорами и бананами был просто примером, на деле у меня есть список сайтов который хранится в базе данных, мне нужно вывести название первого сайта и рядом две цифры, это его номер и общее количество сайтов, вот так:

mysait.ru (1 из 34)

но выводится

mysait.ru (0 из 34)

вот и надо поменять индекс массива с 0 на 1.
 
 Top
Строитель
Отправлено: 01 Августа, 2016 - 23:02:29
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




vlad2020 пишет:
но выводится

mysait.ru (0 из 34)
Код вывода опубликуйте, плиз. В таких случаях обычно добавляется в цикл переменная-счётчик (покажете код, я впишу счётчик). Ну а echo count($arr); при таком количестве сайтов mysait.ru (0 из 34) будет равно 35-и .
 
 Top
vlad2020
Отправлено: 01 Августа, 2016 - 23:09:23
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




Строитель пишет:
vlad2020 пишет:
но выводится

mysait.ru (0 из 34)
Код вывода опубликуйте, плиз. В таких случаях обычно добавляется в цикл переменная-счётчик (покажете код, я впишу счётчик). Ну а echo count($arr); при таком количестве сайтов mysait.ru (0 из 34) будет равно 35-и .


В общем я как бы решил проблему, переменную которая подсчитывала количество элементов

$summ = count($arr)

я засунул в ещё одну переменную

$num = $summ - 1;

и просто вывожу значение на -1, то есть без нуля
echo $num;
Но всё равно спасибо за помощь.
 
 Top
Строитель
Отправлено: 01 Августа, 2016 - 23:38:52
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




vlad2020, я предполагаю, что вызов count($arr) вам понадобился для дальнейшего использования общего количества в цикле for . Но можно обойтись и без count($arr), и без последующих манипуляций с возвращённым нею значением. Предлагаю рассмотреть такой вариант
PHP:
скопировать код в буфер обмена
  1. // Массив со ссылками $arr
  2. foreach ($arr as $i => $url) {
  3.     echo ++$i .'. '. $url .'<br />';
  4. }

Кода меньше, и читать удобнее.

(Отредактировано автором: 01 Августа, 2016 - 23:40:08)

 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Августа, 2016 - 11:47:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1. $i = 0; while(...) {
  2. $arr[++$i] = ...;
  3. }
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB