Функции для массива

Статус
Закрыто для дальнейших ответов.

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
Есть массив $user[id2], мне надо поменять ключ на id1, с помощью какой функции можно это сделать?
 

AngelGabriel

И имя мне - легион
Регистрация
23.11.2008
Сообщения
778
хз может так
Код:
<?php
$array = array("id1" => "one",
               "id2" => "two",
               "id3" => "three");
$temp = $array["id2"];
$array["id2"] = $array["id1"];
$array["id1"] = $temp;
foreach ($array as $kay => $value) {
  echo $kay." => ".$value."<br />";
}
?>
может и говнокод я не вникал писал 3 минуты.
 

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
у меня массив $user[id2], если запустить его в цикле то он выдаст 1,2,3,4,5, а мне надо чтоб внутри все было так как и есть а ключ переименовать в id1, была у меня вчера идея, попробую реализовать.
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
у меня массив $user[id2], если запустить его в цикле то он выдаст 1,2,3,4,5, а мне надо чтоб внутри все было так как и есть а ключ переименовать в id1, была у меня вчера идея, попробую реализовать.
не понятно что именно нужно? переместить содержимое одного массива в другой?
$user[id1]=$user[id2];
 

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
есть массив $friends[id1] и friends2[id2] можно ли их объединить?
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
есть массив $friends[id1] и friends2[id2] можно ли их объединить?
Код:
$friends[id1] .= $friends2[id2];//(точка перед равно)
Помогло?

если ключи есть совпадающие
Код:
foreach($friends2[id2] as $key=>$item)
{
    $friends[id1][$key.'_2']=$item;
}
ну или с проверкой
Код:
foreach($friends2[id2] as $key=>$item)
{
    if(isset($friends[id1][$key]))// проверка на существование ключа
    {
        $friends[id1][$key.'_2']=$item;
    }
    else
    {
        $friends[id1][$key]=$item;
    }
}
можно усложнить
Код:
foreach($friends2[id2] as $key=>$item)
{
    if(isset($friends[id1][$key]) && $friends[id1][$key]!==$item)// проверка на существование ключа и совпадение с существующим значением ключа первого массива
    {
            $friends[id1][$key.'_2']=$item;
    }
    else
    {
        $friends[id1][$key]=$item;
    }
}
вот
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
http://www.php.net/manual/ru/function.array-merge-recursive.php
http://php.net/manual/ru/ref.array.php
Ща буду круто минусовать за говнокод.
Snickers,mrPsyx RTFM !!!!

mrPsyx если нужно менять индекс массива не меняя последовательности - ошибка в логике, для чего это нужно?? какая задача?

если просто нужно поменять ключ, то
Код:
 a['new_key'] = a['old_key']; unset(a['old_key']);
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
ну да, как то не допер сразу до рекурсии)
изобрел велосипед)
 

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
вобщем чтоб поставить конец этой теме, нужно чтоб вы мне помогли разобраться в одном вопросе,

Код:
$query = mysql_query("SELECT id1 FROM friends WHERE id2='4'"); // он возвращает 3 ряда - 10, 20, 30
$array = mysql_fetch_assoc($query); // значит массив будет состоять из 10,20,30
что это за массив? "$array"
если писать
Код:
print $array[id1];
он выведет только 10, а если мне нужно обратится в ручную ко второму ряду, то как это сделать?
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Код:
print_r ($array);
Код:
while($query2 = mysql_fetch_assoc($query)){
  print $query2['id1']; 
}
 

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
ты немножко меня не понял, если написать то что ты только что написал, код отобразит все значении массива, а если я хочу чтоб строка
Код:
print $array[id1]
выдала не не первое значение, а только второе, то вот это как осуществить?
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Код:
while($query2 = mysql_fetch_assoc($query)){
  $id[] .= $query2['id1'];
}
echo $id[2];
точнее, не $id[2], а $id[1], т.к. отсчет от 0
 

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
идея о том чтоб сделать из массива массив должно работать
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
идея о том чтоб сделать из массива массив должно работать
Стоп, стоп, пожалуйста опишите задачу на более высоком уровне, т.к. пока, например, я не понимаю зачем вам только второе значение! может можно проще чем пытаетесь вы
 

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
Стоп, стоп, пожалуйста опишите задачу на более высоком уровне, т.к. пока, например, я не понимаю зачем вам только второе значение! может можно проще чем пытаетесь вы
Прочти пожалуйста мой 9 пост, и ответь мне на вопрос, что это за массив мы получаем, и как он работает, если ответишь то дальше все станет на свои места.... и за одно напишу зачем мне это надо.
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Стоп, стоп, пожалуйста опишите задачу на более высоком уровне, т.к. пока, например, я не понимаю зачем вам только второе значение! может можно проще чем пытаетесь вы
Прочти пожалуйста мой 9 пост, и ответь мне на вопрос, что это за массив мы получаем, и как он работает, если ответишь то дальше все станет на свои места.... и за одно напишу зачем мне это надо.
Ну для начала этим запросом мы НЕ ПОЛУЧАЕМ МАССИВОВ (o_0, не правда ли). Мы получаем один ассоциативный(или нет если fetch_array) массив!
Далее: запрос: SELECT name,id FOR table ORDER BY id
мы получаем циклом while массив(значения для примера):
array(
1=>array(name=>'имя1', id=>1),
1=>array(name=>'имя3', id=>3),
1=>array(name=>'имя5', id=>5),
) все отсортировано в порядке, как идет запрос и как выводится из базы, если бы я написал ORDER BY id DESC то шло бы 5 3 1. Это вы хотели узнать?

и за одно напишу зачем мне это надо. блин, как вы не понимаете, что мне это нах не надо знать, я и без вас прекрасно живу/ Как бы альтруизм и т.п., я в свое время тоже задавал вопросы(правда такие, что на phpclub мне отвечали далеко не всегда и единицы) ЭТО НУЖНО В ПЕРВУЮ ОЧЕРЕДЬ ВАМ, т.к. от того, сколько я знаю о задаче зависит точность ответа на ваш вопрос, тем больше шансов у вас получить готовый ответ или точную информацию.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
$query = mysql_query("SELECT id1 FROM friends WHERE id2='4'"); // он возвращает 3 ряда - 10, 20, 30
$array = mysql_fetch_assoc($query); // значит массив будет состоять из 10,20,30
массив будет состоять не из 10, 20, 30, как вы наивно полагаете, а только из 10, а точнее - из одного элемента 'id1' => 10.

Потому. что вы читаете только первую строку результата запроса.
Если вы хотите именно вручную и именно вторую строку запроса, вызовите еще раз mysql_fetch_assoc($query)

В результате получите такой образчик, достойный индусской галереи:
Код:
$query = mysql_query("SELECT id1 FROM friends WHERE id2='4'"); // он возвращает 3 ряда - 10, 20, 30
$array = mysql_fetch_assoc($query); // значит массив будет состоять из 10
$array = mysql_fetch_assoc($query); // а теперь массив будет состоять из 20
print $array['id1']; // не забудьте id1 обернуть в кавычки - это же имя ключа!
И как, по-вашему, это проясняет суть задачи, которая перед вами стоит?

Ваши посты напомнили мне бородатый анекдот:
Садится чел в такси. Таксист спрашивает:
- Куда едем?
- А твоё какое дело?!
 

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
Нее я не имел ввиду что вы вот мне ответе а потом если ответе я вам раскрою секрет вселенной, неет, тут гораздо проще все, просто все что я здесь написал это не из задачи, эти задачи я написал для того чтоб я понял как это работает, а уже если я понял бы понял то я решил задачу.

дело в неправильно в свое время проеденном материале, я всегда думал что функция например mysql_fetch_row() возвращает полноценный массив. Вобщем я все понял.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Инженер Тимофеев: Иван Васильевич! Когда вы говорите, такое впечатление, что вы бредите!
(Захлопывает дверь перед носом Бунши)

(М.Булгаков "Иван Васильевич")
 
Статус
Закрыто для дальнейших ответов.
Верх Низ