Diziye değer ve anahtarı hem itmek nasıl (php)

5 Cevap php

Bu kod bir göz atın:

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

Ben o yüzden böyle bir şey arıyorum:

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

Bunu yapmak için bir işlevi var mı? (Array_push bu şekilde çalışmaz çünkü)

5 Cevap

Sonraki anahtarını belirlemek yolu yoktur çünkü Hayır, ilişkisel diziler için array_push() eşdeğeri yoktur.

Sen kullanmak zorunda olacak

$arrayname[indexname] = $value;

Pushing bir diziye bir değer otomatik olarak bunun için sayısal bir anahtar oluşturur.

Bir dizi için bir anahtar-değer çifti eklerken, zaten anahtar var, biri sizin için yaratılmış olması gerekmez. Bir diziye bir tuşa basılarak mantıklı değil. Sadece dizideki belirli anahtarının değerini ayarlayabilirsiniz.

// no key
array_push($array, $value);
// same as:
$array[] = $value;

// key already known
$array[$key] = $value;

Pekka tam olarak ne dedi ...

İsterseniz Alternatif olarak, muhtemelen bu gibi array_merge kullanabilirsiniz:

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

Çok basit gibi ama muhtemelen Pekka yöntemini tercih ediyorum.

Sen dizileri birleştirmek ve ekledi dizinin anahtarlarını tutmak için + operatörünü kullanabilirsiniz. Örneğin:

<?php
$arr1 = array('foo' => 'bar');
$arr2 = array('baz' => 'bof');
$arr3 = $arr1 + $arr2;
print_r($arr3);
// prints:
// array(
//   'foo' => 'bar',
//   'baz' => 'bof',
// );
?>

Peki ne olabilir $_GET += array('one' => 1);

Ben sadece aynı şeyi arıyordum ve ben eski okul olduğum için bir kez daha, benim düşünce farklı olduğunu fark etti. Ben BASIC ve PERL için tüm yolu geri dönmek ve bazen kolay şeyler gerçekten PHP nasıl unutur.

Ben sadece 3 sütun onların olan veritabanındaki tüm ayarları almak için bu işlevi yaptı. setkey, madde (anahtar) & (değer) ve sadece yukarıdaki gibi itme kullanmadan aynı anahtar / değer kullanarak ayarları adlı bir diziye koyun.

Oldukça kolay ve Basit gerçekten


// Get All Settings
$settings=getGlobalSettings();


// Apply User Theme Choice
$theme_choice = $settings['theme'];

.. etc etc etc ....




function 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;
}


Yani gibi diğer mesajlar açıklamak ... kullandığınız zaman Php'de "PUSH" bir dizi için gerek yoktur

Anahtar => değer

VE ... İlk iki dizi tanımlamak için gerek yoktur.

$ Dizi = array ();

Tanımlamak veya itmek gerekmez. Sadece $ dizi [$ key] = $ değer atamak; Bu otomatik olarak, aynı zamanda bir itme ve bir beyandır.

I (P) oor (H) elpless (P) korumasında, ben Aptallar için Programlama anlamına gelir, güvenlik nedenleriyle eklemeniz gerekir, ben PHP demek .... hehehe Ben sadece ben amaçlanan ne için bu kavramı kullanmanızı öneririz. Başka herhangi bir yöntem, bir güvenlik riski olabilir. Orada, benim reddedilmesine yapılmadı!