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
Форумы портала PHP.SU :: Версия для печати :: Массив php
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Массив php

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

1. vlad2020 - 01 Августа, 2016 - 22:22:36 - перейти к сообщению
Задача такова, нужно чтобы массив начинался с 1.

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

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

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

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

как сделать начало массива с 1 и без подсчета 0.
2. Строитель - 01 Августа, 2016 - 22:29:57 - перейти к сообщению
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]; // помидор
3. vlad2020 - 01 Августа, 2016 - 22:43:15 - перейти к сообщению
Строитель пишет:
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['таблица'];
}

то есть объекты то добавляются, то удаляются.
4. Строитель - 01 Августа, 2016 - 22:46:08 - перейти к сообщению
vlad2020, тогда скажите, а зачем вам понадобилось менять индекс массива на единицу?
5. vlad2020 - 01 Августа, 2016 - 22:54:58 - перейти к сообщению
Строитель пишет:
vlad2020, тогда скажите, а зачем вам понадобилось менять индекс массива на единицу?



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

mysait.ru (1 из 34)

но выводится

mysait.ru (0 из 34)

вот и надо поменять индекс массива с 0 на 1.
6. Строитель - 01 Августа, 2016 - 23:02:29 - перейти к сообщению
vlad2020 пишет:
но выводится

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

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


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

$summ = count($arr)

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

$num = $summ - 1;

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

Кода меньше, и читать удобнее.
9. armancho7777777 - 02 Августа, 2016 - 11:47:25 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $i = 0; while(...) {
  2. $arr[++$i] = ...;
  3. }

 

Powered by ExBB FM 1.0 RC1