Автор Тема: PHP: От array към associative array  (Прочетена 7690 пъти)

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
PHP: От array към associative array
« -: Feb 11, 2012, 12:49 »
Пример:
Код
GeSHi (PHP):
  1. (
  2.    [0] => id
  3.    [1] => 1
  4.    [2] => sort
  5.    [3] => asc
  6.    [4] => page
  7.    [5] = > 123
  8. )

Да стане:
Код
GeSHi (PHP):
  1. (
  2.    [id] => 1
  3.    [sort] => asc
  4.    [page] => 123
  5. )

Някакви идеи?
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

borovaka

  • Напреднали
  • *****
  • Публикации: 1331
  • Distribution: Каквото дойде
  • Window Manager: Gnome / KDE
    • Профил
Re: PHP: От array към associative array
« Отговор #1 -: Feb 11, 2012, 13:34 »
Код
GeSHi (PHP):
  1. <?php
  2.  
  3.  
  4. $arrtest = array('id',1,'sort','asc','page',123);
  5.  
  6.  
  7. while (is_array($arrtest) && !empty($arrtest))
  8. $arr2[array_shift($arrtest)] = array_shift($arrtest);
  9.  
  10. echo '<pre>'.print_r($arr2,true).'</pre>';
  11.  
  12. ?>
« Последна редакция: Feb 11, 2012, 14:10 от borovaka »
Активен

Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

ivo3d

  • Напреднали
  • *****
  • Публикации: 161
  • Distribution: Mint Linux
  • Window Manager: Gnome
    • Профил
Re: PHP: От array към associative array
« Отговор #2 -: Feb 11, 2012, 13:42 »
Ето и още един вариант

Код
GeSHi (PHP):
  1. $array = array('id', 1, 'sort', 'asc', 'page', 123);
  2. $assoc = array();
  3.  
  4. for ($i = 0; $i < count($array); $i = $i+2) {
  5. $assoc[$array[$i]] = $array[$i+1];
  6. }
« Последна редакция: Feb 11, 2012, 13:48 от ivo3d »
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP: От array към associative array
« Отговор #3 -: Feb 11, 2012, 14:03 »
Благодаря :).
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

borovaka

  • Напреднали
  • *****
  • Публикации: 1331
  • Distribution: Каквото дойде
  • Window Manager: Gnome / KDE
    • Профил
Re: PHP: От array към associative array
« Отговор #4 -: Feb 11, 2012, 14:07 »
Даже това дето ти го предложих не трябва да е с du ами направо с while, защото ако не се подаде масив ще се обърка така :)
п.с. Сега ще го оправя :)
Активен

Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

Odido

  • Напреднали
  • *****
  • Публикации: 627
  • Distribution: Arch Linux
  • Window Manager: Gnome
    • Профил
Re: PHP: От array към associative array
« Отговор #5 -: Feb 11, 2012, 18:44 »
Не съм много добър с php , но според gatakka foreach е много добър за обхождане на масиви.Ето и моето предложение.
Код
GeSHi (PHP):
  1. <?php
  2. $arr=array('id',1,'sort','asc','page',123);
  3.  
  4. foreach($arr as $v=>$k)
  5. {
  6.    foreach ($arr as $k => $kk) {
  7.        echo $kk.'</br>';
  8.    }
  9.  
  10.  
  11. }
  12.  
  13.   ?>
Активен

"Congratulations, you broke the Internet
Look at what you did! Are you happy now?"

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP: От array към associative array
« Отговор #6 -: Feb 11, 2012, 18:50 »
@ApucTokpaT примера ти не е верен. Ако някой го прочете само ще се обърка. Другите две предложения вършат работа.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

Odido

  • Напреднали
  • *****
  • Публикации: 627
  • Distribution: Arch Linux
  • Window Manager: Gnome
    • Профил
Re: PHP: От array към associative array
« Отговор #7 -: Feb 11, 2012, 19:45 »
Ммда, прав си ,само ги изрежда в последователен ред ,извинявам се....
Активен

"Congratulations, you broke the Internet
Look at what you did! Are you happy now?"

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: PHP: От array към associative array
« Отговор #8 -: Feb 12, 2012, 02:21 »
За спорта, едно решение без обичайните цикли:
Код
GeSHi (PHP):
  1. <?php
  2. $input = array('id', 1, 'sort', 'asc', 'page', 123);
  3. $inputFlip = array_flip($input);
  4.  
  5. function getOdd ($item) {
  6.    return $item & 1;
  7. }
  8. function getEven ($item) {
  9.    return !($item & 1);
  10. }
  11.  
  12. $keys = array_flip(array_filter($inputFlip, getEven));
  13. $values = array_flip(array_filter($inputFlip, getOdd));
  14.  
  15. $output = array_combine($keys, $values);
  16. ?>
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

thecharge

  • Новаци
  • *
  • Публикации: 2
    • Профил
Re: PHP: От array към associative array
« Отговор #9 -: Mar 25, 2012, 02:13 »
Пример:
Код
GeSHi (PHP):
  1. (
  2.    [0] => id
  3.    [1] => 1
  4.    [2] => sort
  5.    [3] => asc
  6.    [4] => page
  7.    [5] = > 123
  8. )

Да стане:
Код
GeSHi (PHP):
  1. (
  2.    [id] => 1
  3.    [sort] => asc
  4.    [page] => 123
  5. )

Някакви идеи?

Код
GeSHi (PHP):
  1. <?php
  2. $arr = array(
  3.    "id" => 1,
  4.    "sort" => "asc",
  5.    "page"  => 123,
  6. );
  7.  
  8. //проверка става с
  9.   foreach($arr as $key=> $value)
  10.  {
  11.   echo $key.'->'.$value.'<br/>';
  12.  }
  13.  
  14. // или с
  15. var_dump($arr);
  16. ?>
  17.  
  18.  
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP: От array към associative array
« Отговор #10 -: Mar 25, 2012, 18:30 »
Че то кой пита как става проверката? Аз знам как става проверката...
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

edmon

  • Гост
Re: PHP: От array към associative array
« Отговор #11 -: Mar 25, 2012, 22:57 »
Айде сега да измерите, коя функция е по-ефективна(по-бърза, по-малко натоварваща)

хехехеех
Активен

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: PHP: От array към associative array
« Отговор #12 -: Mar 26, 2012, 10:43 »
Според мен решението на боровака е доста по-бързо от това на нетер.
Благодарение на използваните функции в последното се извършва многократно обхождане и копиране на масиви. Не знам как е реализирано в PHP, но просто няма как да се избегне.
Докато array_shift спокойно става без обхождане на масива.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: PHP: От array към associative array
« Отговор #13 -: Mar 26, 2012, 11:38 »
Спорен въпрос е дали решението на borovaka или на ivo3d е най-бързо, така че изборът при писане на код е хубаво да падне на някое от тези две решения - не случайно това са стандартните начини за извършване на въпросното действие. Няма нужда да се прави сравнение между тези две решения - натоварването и скоростта ще са толкова близки, че е въпрос на лична преценка на програмиста кое от двете ще му прилегне по-добре в кода. И все пак, не трябва да се забравя, че for и while циклите не са напълно взаимозаменяеми, но в конкретната ситуация няма проблем.
Моето решение е най-бавно (почти двойно по-бавно, което в случая е около 3/10000 разлика, но ако повторим действието много пъти, почти двойната разлика почва да има значение), и както казах, е само за спорта (да попълним и алтернативната графа) или ако по някаква неведома причина програмистът не може или не иска да се обърне към стандартните цикли :)
« Последна редакция: Mar 26, 2012, 11:49 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP: От array към associative array
« Отговор #14 -: Mar 26, 2012, 11:39 »
Как се тества бързодействие на php скрипт?
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Array of strings - c
Общ форум
ivanatora 3 1920 Последна публикация Mar 25, 2007, 00:24
от cenata
проблем със set -A array
Общ форум
loshiat 5 2264 Последна публикация Jun 14, 2010, 16:09
от romeo_ninov
много малък и ОГРОМЕН проблем с Bash ARRAY
Общ форум
loshiat 11 3365 Последна публикация Jul 15, 2010, 12:19
от niakoi
Търсене и подмяна на число в Array - BSD
Общ форум
loshiat 9 2678 Последна публикация Oct 07, 2011, 13:53
от radoulov