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

Форум PHP

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

 

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

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

тема: Адрес элемента массива
 
 автор: Eugene77   (12.07.2009 в 13:43)   письмо автору
 
 

Я создаю новый элемент массива вот так:
<
? $my_array[] = "new_element";

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

Как это сделать?
И есть ли с этими адресами особенности в ООП?

  Ответить  
 
 автор: sim5   (12.07.2009 в 13:55)   письмо автору
 
   для: Eugene77   (12.07.2009 в 13:43)
 

Что значит адрес?

  Ответить  
 
 автор: Eugene77   (12.07.2009 в 14:04)   письмо автору
 
   для: sim5   (12.07.2009 в 13:55)
 

Я потом вызываю функцию
$ok = work_with_the_element_of_massive(&$element);

Мне надо узнать $element, которая после &

  Ответить  
 
 автор: ddhvvn   (12.07.2009 в 14:04)   письмо автору
 
   для: Eugene77   (12.07.2009 в 13:43)
 

>Теперь мне надо узнать адрес вновь созданного элемента массива
$index = count($my_array)-1;

>И есть ли с этими адресами особенности в ООП?
не понятно

  Ответить  
 
 автор: Trianon   (12.07.2009 в 14:06)   письмо автору
 
   для: ddhvvn   (12.07.2009 в 14:04)
 

>>$my_array[] = "new_element";
>$index = count($my_array)-1;

в общем случае это не так...

  Ответить  
 
 автор: Eugene77   (12.07.2009 в 14:13)   письмо автору
 
   для: Trianon   (12.07.2009 в 14:06)
 

>>>$my_array[] = "new_element";
>>$index = count($my_array)-1;
>
>в общем случае это не так...

Разве?
Это уже совсем интересно!
Ведь РНР - не многопроцессный язык.

  Ответить  
 
 автор: Eugene77   (12.07.2009 в 14:11)   письмо автору
 
   для: ddhvvn   (12.07.2009 в 14:04)
 

>>Теперь мне надо узнать адрес вновь созданного элемента массива
>
$index = count($my_array)-1;


Это, конечно, здорово, но называется, если не ошибаюсь, индекс, а не адрес.
Массив у меня имеет развесистую древовидную структуру, поэтому надо целый ряд индексов, чтобы добраться до нужного листочка. А я хочу иметь прямую ссылку на этот листочек.

>>И есть ли с этими адресами особенности в ООП?
>не понятно

Если массив статический или принадлежит экземпляру класса, то не возникает ли косяков в этом случае?

  Ответить  
 
 автор: Trianon   (12.07.2009 в 14:13)   письмо автору
 
   для: Eugene77   (12.07.2009 в 14:11)
 

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

  Ответить  
 
 автор: Eugene77   (12.07.2009 в 14:23)   письмо автору
 
   для: Trianon   (12.07.2009 в 14:13)
 

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


Не понимаю вашей грубости - обычный адрес.
Вот, например:

function echoo(&$b){
    print_r($b);
}
$a["e"] = "el";
$b = &$a["e"];
echoo($b);

  Ответить  
 
 автор: Trianon   (12.07.2009 в 14:24)   письмо автору
 
   для: Eugene77   (12.07.2009 в 14:23)
 

Это называется ссылкой.

  Ответить  
 
 автор: Trianon   (12.07.2009 в 14:31)   письмо автору
 
   для: Trianon   (12.07.2009 в 14:24)
 

<?php

$fruits 
= array(1=>'apple''banana'10=>'cranberry');
$fruits[] = "lemon"end($fruits);
$var = &$fruits[key($fruits)];
print_r($fruits);
$var 'melon';
print_r($fruits);

?>

  Ответить  
 
 автор: Eugene77   (12.07.2009 в 14:52)   письмо автору
 
   для: Trianon   (12.07.2009 в 14:31)
 

Спасибо!

  Ответить  
 
 автор: Eugene77   (12.07.2009 в 14:42)   письмо автору
 
   для: Trianon   (12.07.2009 в 14:24)
 

Я считал, что ссылка и адрес - синонимы.
Извините, что задел этим ваши чувства, но меня сейчас больше интересует практическая сторона, о которой я спросил в начале темы.

Правильно я вас понимаю, что для получения ссылки, вы рекомендуете следующую формулу:
<?
$ref 
= &my_array[sizeof(my_array)-1];


?
Впрочем, нет, вы говорите,что если массив не является списком или в списке не все ключи, то это не сработает.
Как же тогда быть?

  Ответить  
 
 автор: Trianon   (12.07.2009 в 14:44)   письмо автору
 
   для: Eugene77   (12.07.2009 в 14:42)
 

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

  Ответить  
 
 автор: Eugene77   (12.07.2009 в 14:53)   письмо автору
 
   для: Trianon   (12.07.2009 в 14:44)
 

Я просто ответил, ещё не увидев, вашего исчерпывающего тему примера.

  Ответить  
 
 автор: sim5   (12.07.2009 в 15:13)   письмо автору
 
   для: Eugene77   (12.07.2009 в 14:53)
 

end (array) - устанавливает внутренний указатель массива на последний элемент.

  Ответить  
 
 автор: sl1p   (12.07.2009 в 15:25)   письмо автору
 
   для: Trianon   (12.07.2009 в 14:44)
 

мб так легче?)

<?
$fruits 
= array(1=>'apple''banana'10=>'cranberry');
$var = &$fruits[array_push($fruits'siski') - 1];

  Ответить  
 
 автор: Trianon   (12.07.2009 в 15:32)   письмо автору
 
   для: sl1p   (12.07.2009 в 15:25)
 

нет.
Читайте первый пост.

  Ответить  
 
 автор: sl1p   (12.07.2009 в 15:35)   письмо автору
 
   для: Trianon   (12.07.2009 в 15:32)
 

ну это да но

$var[] = "value";
и
array_push($var, "value");
одно и тоже ведь.

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

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