Kaip į masyvą perkelti ir reikšmę, ir raktą

Pažvelkite į šį kodą:

$GET = array();    
$key = 'one=1';
$rule = explode('=', $key);
/* array_push($GET, $rule[0] => $rule[1]); */

Ieškau kažko panašaus į tai, kad:

print_r($GET);
/* output: $GET[one => 1, two => 2, ...] */

Ar yra kokia nors funkcija, leidžianti tai padaryti? (nes array_push taip neveiks)

Sprendimas

Ne, asociatyviniams masyvams nėra array_push() atitikmens, nes nėra galimybės nustatyti kito rakto.

Turėsite naudoti

$arrayname[indexname] = $value;
Komentarai (4)

Būtent tai, ką sakė Pekka...

Jei norėtumėte, tikriausiai galėtumėte naudoti array_merge taip:

array_merge($_GET, array($rule[0] => $rule[1]));

Bet aš labiau norėčiau Pekka's metodo, nes jis daug paprastesnis.

Komentarai (0)

Kaip tik ieškojau to paties ir supratau, kad ir vėl mano mąstymas skiriasi, nes esu senosios mokyklos atstovas. Esu grįžęs prie BASIC ir PERL, todėl kartais pamirštu, kaip viskas paprasta PHP.

Tiesiog padariau šią funkciją, kad paimčiau visus nustatymus iš duomenų bazės, kur jų yra 3 stulpeliai. setkey, item (key) & value (value) ir patalpinčiau juos į masyvą, pavadintą settings, naudodamas tą patį raktą / vertę, nenaudodamas push, kaip pirmiau.

Gana lengva & amp; paprastas tikrai

// Gauti visus nustatymus $settings=getGlobalSettings();

// Taikyti naudotojo pasirinktą temą $theme_choice = $settings['theme'];

... ir t. t. ir t. t. ....

funkcija getGlobalSettings(){

$dbc = mysqli_connect(wds_db_host, wds_db_user, wds_db_pass) or die("MySQL Error: " . mysqli_error());
mysqli_select_db($dbc, wds_db_name) or die("MySQL Error: " . mysqli_error());
$MySQL = "SELECT * FROM systemSettings";
$result = mysqli_query($dbc, $MySQL);
while($row = mysqli_fetch_array($result)) 
    {
    $settings[$row['item']] = $row['value'];   // NO NEED FOR PUSH
    }
mysqli_close($dbc);

return $settings; }

Taigi, kaip paaiškinta kituose pranešimuose... php nereikia "PUSH" masyvo, kai naudojate

Key => Value

IR... Taip pat nereikia pirmiausia apibrėžti masyvo.

$array=masyvas();

Nereikia apibrėžti ar stumti. Tiesiog priskirkite $array[$key] = $value; Tai automatiškai yra stūmimas ir deklaracija tuo pačiu metu.

Turiu pridurti, kad saugumo sumetimais, (P)oor (H)elpless (P)rotection, I means Programming for Dummies, I mean PHP.... hehehehe Siūlau šią sąvoką naudoti tik tam, ką aš ir norėjau. Bet koks kitas būdas gali kelti pavojų saugumui. Štai, padariau savo išlygą!

Komentarai (0)