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

Форум PHP

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

 

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

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

тема: про массивы
 
 автор: localGhost   (18.04.2005 в 06:22)   письмо автору
 
 

подскажите пожста! есть массив:

<?
$array 
= array (
   
name1 => value1,
   
name2 => value2,
   .......);
?>


как добавить в этот массив еще значения не применяя конструкции:


<?
$array
["name3"] = value3;
$array["name4"] = value4;
# а написав так:
$array = array (
   
name3 => value3,
   
name4 => value4);
# только в данном случае массив перепишеться, а как написать чтоб значения просто добавились?
?>

   
 
 автор: glsv (Дизайнер)   (18.04.2005 в 08:53)   письмо автору
 
   для: localGhost   (18.04.2005 в 06:22)
 


<?
  $array
[] = "новое значение";
  
$array[] = "еще одно";
  
$array[] = "и еще одно";
?>

   
 
 автор: localGhost   (18.04.2005 в 09:05)   письмо автору
 
   для: glsv (Дизайнер)   (18.04.2005 в 08:53)
 

хм такой вариант не канает потому что получиться в результате следующее:


array (
   0 => новое значение
   1 => еще одно
   2 => и еще одно
)


мне нужно что бы можно было написать:

$array = array (
   name1 => новое значение
   name2 => еще одно
   name3 => и еще одно
)


но чтобы в массив значения были добавлены а не заменены.....


т.е. пример:


array (
   name1 => value1,
   name2 => value2,
   name3 => value3,
   name4 => value4
)

# заход первый:

$array = array (
   name1 => value1,
   name2 => value2,
)

# заход второй,
# вариант первый:

$array["name3"] = value3;
$array["name4"] = value4;

# вариант второй:

$array = array (
   name3 => value3,
   name4 => value4
);


вот короче надо чтоб во втором так сказать заходе в массив добавить значения вторым вариаетом, можно и первым но в моем случае значений достаточно много и не очень красиво выглядит - нагроможденно... вот хотелось чтоб это выглядело как во втором варианте, но как правильно написать никак немогу понять. надеюсь понятно объяснил)))

   
 
 автор: glsv (Дизайнер)   (18.04.2005 в 09:37)   письмо автору
 
   для: localGhost   (18.04.2005 в 09:05)
 

Честно говоря, не очень понял…
Вы говорите, что значения нужно добавить.
Вот этот вариант как раз и добавляет значения

$array[] = "новое значение";


<?
// Инициализируем массив
$array = array ( 
   
name1 => value1
   
name2 => value2
   
name3 => value3
   
name4 => value4 
);
// Добавим значение к существующему массиву
$array[] = "еще одно значение";

//Выводим на экран
echo "<pre>";
print_r($array);
echo 
"</pre>";
?> 

На экране видим

Array
(
    [name1] => value1
    [name2] => value2
    [name3] => value3
    [name4] => value4
    [0] => еще одно значение
)

Т.е. появилось новое значение.

Или же нужно не добавлять, а изменять? Тогда нужно обращаться по имени элемента.

$array["name2"] = "еще одно значение";
$array["name3"] = "еще одно значение";
$array["name4"] = "еще одно значение";

Этот же вариант сработает если нужно добавлять в массив с именами индексов. Да, конечно, если элементы с такими индексами (name2, name3, name4) существуют, то они будут заменены, а не добавлены. Но ведь так и должно быть. Ведь не может же у вас быть двух элементов с одинаковыми индексами.

PS: По моему, мы запутались:)

   
 
 автор: glsv (Дизайнер)   (18.04.2005 в 09:43)   письмо автору
 
   для: localGhost   (18.04.2005 в 09:05)
 

> в этот массив еще значения не применяя конструкции
Или же задача в том, чтобы обязательно применить конструкцию

$array = array ( 
….
);

Хм… а почему такое условие? Почему нельзя воспользоваться стандартными методами?

> значений достаточно много и не очень красиво выглядит - нагроможденно
Но ведь даже количество символов почти одинаковое в этих двух способах инициализации массивов. Почему первый для вас менее удобен, чем второй?

Вы хотите унифицировать код? Тогда лучше совсем не использовать вариант с конструкцией

$array = array ( 
… 
);

А всегда пользоваться

$array["nameN"] = " значение";

   
 
 автор: localGhost   (18.04.2005 в 09:58)   письмо автору
 
   для: glsv (Дизайнер)   (18.04.2005 в 09:43)
 

просто хотелось разобраться...

и удобней смотриться.... не так громоздко...

>Array
>(
> [name1] => value1
> [name2] => value2
> [name3] => value3
> [name4] => value4
> [0] => еще одно значение
>)

первое значение в массиве... или как это назвать.. млин запутался... вобщем имя nameN будет указываться, поэтому недопутимо автоматическое заполнение в виде:

$array[] = ...

   
 
 автор: cheops   (18.04.2005 в 12:38)   письмо автору
 
   для: localGhost   (18.04.2005 в 09:58)
 

Так а вы применяйте не $array[] = ..., а как Дизайнер пишет $array[name5] = ... А ключ name5 вычисляйте по количеству элмементов в массиве, которое можно узнать при помощи функции count($array).

   
 
 автор: cheops   (18.04.2005 в 12:36)   письмо автору
 
   для: localGhost   (18.04.2005 в 09:05)
 

А вы при первом заходе создавайте массив
<?php
$array 
= array ( 
   
name1 => value1
   
name2 => value2
);
?>

а при втором
<?php
$array 
= array ( 
   
name3 => value3
   
name4 => value4 
);
?>

Если в силу каких то причин при втором заходе элмементы первого массива остаются, их всегда можно уничтожить при помощи функции unset
<?php
  
unset($array);
?>

   
Rambler's Top100
вверх

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