AMcoder - javascript, python, java, html, php, sql

Արդյո՞ք array_shift-ը և explode-ն աշխատում են:

Հետաքրքիր է, նրանք անջատե՞լ են array_shift-ը > PHP 5.2.6-ում

$realid = array_shift(explode("-", $id));

Քանի որ այս կոդը լավ էր աշխատում իմ սերվերի PHP տարբերակի 5.2.6-ի վրա, մինչդեռ չի աշխատում մեկ այլ սերվերում ավելի բարձր PHP տարբերակով:

Եթե ​​այո, կա՞ արդյոք, այնուամենայնիվ, կարող եմ անել հետևյալը.

Այս 87262-any-thing-here.html-ի նման URL-ի համար ինչպես կարող եմ ստանալ միայն համարը՝ 87262, որպեսզի այն օգտագործեմ տվյալների բազայից ցանկացած մուտքագրման համար.

$qryrec="select * from mytable where id='$realid'";
$resultrec=mysql_query($qryrec) or die($qryrec);
$linerec=mysql_fetch_array($resultrec);

Կա՞ որևէ կերպ նույնն անել առանց array_shift-ի:

php
28.12.2011

  • Այն լավ է աշխատում 5.3-ի վրա: Ամեն դեպքում, դուք կարող եք անել նույնը, օգտագործելով regexp 29.12.2011
  • array_shift-ը լավ է աշխատում PHP 5.2.6-ում և դրանից դուրս: ideone.com/NnGIL 29.12.2011
  • հոգոց Չաշխատելը երբեք սխալի լավ նկարագրություն չէ: Ի՞նչ է լինում կամ չի լինում։ Ի՞նչ սխալներ եք ստանում: 29.12.2011
  • Դուք, այնուամենայնիվ, պետք է օգտագործեք current(explode(..)), կամ ավելի լավ strtok($id, "-"), եթե ցանկանում եք միայն առաջին մասը: 29.12.2011
  • php -r 'var_dump(array_shift(explode("-", "87262-any-thing-here.html")));' Տպում է string(5) "87262": Թարմացրեք ձեր հարցը և տրամադրեք ամբողջական մուտքեր և ակնկալվող արդյունքներ: 29.12.2011
  • Խնդրում ենք նշել, թե որ տարբերակն է աշխատում մյուս սերվերը: Նաև փորձեք գործարկել $buf = explode ("-", $id); $realid = array_shift ($buf);-ը, դա կարող է լինել ձեր կոնկրետ PHP տարբերակի սխալ: 29.12.2011
  • strtok($id, -) աշխատում է անթերի ~ շնորհակալություն բոլորին 29.12.2011

Պատասխանները:


1

Օգտագործեք

$realid = explode("-", $id);
$realid = $realid[0];
28.12.2011
  • 1.) Ես օգտագործում եմ $realid = $realid[0]; միշտ կառուցել, եթե զանգվածի մնացած մասը ինձ պետք չէ, քանի որ այն ազատում է մնացածի կողմից օգտագործվող հիշողությունը: 2.) Կառուցվածքը կարդալուց մինչև int-ի վրա հիմնված զանգվածի առաջին տարրը $array[0] է: 3.) AFAIK array_shift()-ին անհրաժեշտ է հղում պարամետր: Ֆունկցիայի ելքը մեկ չէ: Սա կարող է հեշտությամբ դառնալ ավելի խիստ կամ պակաս խիստ PHP-ի տարբեր տարբերակներում: 4.) Չվստահել PHP-ին, որն աշխատում է այնպես, ինչպես ես եմ մտադիր, ոչ այնպես, ինչպես գրում եմ, կարծես լավ գաղափար է: 29.12.2011

  • 2

    Խմբագրել. Տողի սկզբում տասնորդական արժեքը ստանալու համար կարող եք օգտագործել sscanf:

    $url = '87262-any-thing-here.html';
    list($realid) = sscanf($url, '%d');
    

    Այն դեպքում, երբ URL-ը սկզբում չունի տասնորդական թիվ, $realid կլինի NULL: explode-ով դուք կստանաք չսահմանված արդյունք՝ կախված URL-ից:


    array_shiftՓաստաթղթերը ըստ իր ֆունկցիայի հղումի կարիք ունեն փոփոխական.


    մուտքագրեք պատկերի նկարագրությունը այստեղ


    (տե՛ս նաև՝ Անցում հղումով< /ա>)

    Բայց դուք նրան տալիս եք գործառույթ.

     $realid = array_shift(explode("-", $id));
    

    Ես չէի ակնկալի, որ դրա պատճառով այն միշտ ճիշտ կաշխատի: Բացի այդ, դա կարող է առաջացնել նախազգուշացումներ և սխալներ որոշ կայանքներում:

    Փոխարենը օգտագործեք փոփոխական.

     $ids = explode("-", $id);
     $realid = array_shift($ids);
     unset($ids);
    

    Կամ ձեր դեպքում.

     list($realid) = explode("-", $id);
    

    որը կօգտագործի զանգվածի առաջին տարրը, որը explode-ով կվերադարձնի $realid: Տես listՓաստաթղթեր:

    28.12.2011
  • Ինչի մասին ես խոսում? array_shift(explode("-", $id));-ը լավ է աշխատում (կարծում եմ, որ PHP 5.3-ում E_STRICT նախազգուշացում է տալիս): 29.12.2011
  • php-ը պարզապես կգնահատի explode()-ը, նախքան այն որպես արգումենտ փոխանցելը: and explode-ը վերադարձնում է զանգված, այնպես որ լավ է: 29.12.2011
  • @Rocket. Աշխատում է չի նշանակում, որ կա: PHP-ի տարբերակները տարբերվում են, ինչպես նաև սխալների գրանցման կոնֆիգուրացիաները, օրինակ. Strict Standards: Only variables should be passed by reference - Սկզբում ես կառչած կլինեի գործառույթի փաստաթղթերին: 29.12.2011
  • @hakre: Փաստաթղթերի մեջ որտեղ գրված է, որ ես չեմ կարող անել array_shift(explode("-", $id));: 29.12.2011
  • @hakre. Թվում է, թե դա խիստ նախազգուշացում է, բայց դեռ աշխատում է: codepad.viper-7.com/GRS3At 29.12.2011
  • @Rocket. Ես ավելացրել եմ սքրինշոթ, որն ընդգծում է այն: Սխալը, որը ես տեղադրել եմ ավելի վաղ, նույնն է, ինչ ձեր ծածկագրիչի հղումում (նույնիսկ ;)-ից): 29.12.2011
  • @hakre: Ահ, չնկատեցի սխալը ձեր նախկին մեկնաբանության մեջ: Համենայն դեպս, ես չհասկացա, որ explode()ը որպես տեղեկանք անցնելը վատ էր: Սովորեք ինչ-որ նոր բան ամեն օր :-) 29.12.2011
  • @Rocket. Այժմ, քանի որ դուք գիտեք խնդիրը, ահա PHP-ի կոտրումը, որը կանխում է նախազգուշացումը ;) (բայց ես չեմ խրախուսում այն ​​օգտագործել արտադրության կոդի համար, քանի որ դա կարող է չաշխատել ապագայում). codepad.viper-7.com/BOtWEU 29.12.2011
  • @hakre: Հե, փաթաթելով ()ի մեջ: Կոկիկ. 29.12.2011
  • @David Chan. Բայց վերադարձված զանգվածը փոփոխական համատեքստում չէ: Տեսեք իմ նախորդ մեկնաբանությունը, թե ինչպես կարող եք ինչ-որ կերպ մտնել այդ համատեքստում, եթե չեք սիրում փոփոխական օգտագործել: 29.12.2011
  • @Rocket. Տես այս հարցը. Փակագծերը փոխում են ֆունկցիայի կանչի արդյունքի իմաստաբանությունը 29.12.2011
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..