Yanıtlar:
Hayır, array_push()ilişkilendirilebilir diziler için eşdeğer yoktur, çünkü bir sonraki anahtarı belirlemenin bir yolu yoktur.
Kullanmanız gerekecek
$arrayname[indexname] = $value;
$arrayname = array('indexname1' => $value1, 'indexname2' => $value2);bunları tek öğe olarak ayarlayacaktı $arrayname. Zaten $arraynameayarladıysanız ve değerlerini korumak istiyorsanız, deneyin $arrayname += $anotherarray. İlk dizideki mevcut anahtarların ikincisinin üzerine yazılacağını unutmayın.
$a = array("name" => "John"); $a += array("name" => "Tom");o $a["name"]zaman "John" olacak
Bir değeri bir diziye itmek , otomatik olarak bir dizi için sayısal bir anahtar oluşturur.
Bir diziye bir anahtar / değer çifti eklerken, zaten anahtarınız vardır, sizin için bir tane oluşturmanıza gerek yoktur. Bir diziyi bir tuşa itmek mantıklı değil. Dizideki yalnızca belirli anahtarın değerini ayarlayabilirsiniz.
// no key
array_push($array, $value);
// same as:
$array[] = $value;
// key already known
$array[$key] = $value;
+Dizileri birleştirmek ve eklenen dizinin anahtarlarını tutmak için birleşim 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',
// );
Böylece yapabilirsin $_GET += array('one' => 1);.
Sendika operatörünün kullanımı ile ilgili daha fazla bilgi http://php.net/manual/en/function.array-merge.php adresindekiarray_merge belgelerde bulunmaktadır .
array_merge()Ve +işleç arasındaki temel fark , 2 dizinin aynı anahtar +işleçteki değerleri içermesi , ikinci dizideki değeri yok saymasıdır (geçersiz kılmaz), ayrıca sayısal anahtarları yeniden numaralandırmaz / yeniden endekslemez ...
Cevabımı masaya eklemek istiyorum ve işte burada:
//connect to db ...etc
$result_product = /*your mysql query here*/
$array_product = array();
$i = 0;
foreach ($result_product as $row_product)
{
$array_product [$i]["id"]= $row_product->id;
$array_product [$i]["name"]= $row_product->name;
$i++;
}
//you can encode the array to json if you want to send it to an ajax call
$json_product = json_encode($array_product);
echo($json_product);
umarım bu birine yardım eder
Acaba neden en basit yöntem henüz gönderilmedi:
$arr = ['company' => 'Apple', 'product' => 'iPhone'];
$arr += ['version' => 8];
array_mergeve dizi birliği ( +=) ters bir şekilde davranıyorsa, yani dizi_merge ikinci dizideki değere ve dizi birliği ilk dizideki değere saygı gösterir.
Bu sizin için yararlı olabilecek çözümdür
Class Form {
# Declare the input as property
private $Input = [];
# Then push the array to it
public function addTextField($class,$id){
$this->Input ['type'][] = 'text';
$this->Input ['class'][] = $class;
$this->Input ['id'][] = $id;
}
}
$form = new Form();
$form->addTextField('myclass1','myid1');
$form->addTextField('myclass2','myid2');
$form->addTextField('myclass3','myid3');
array (size=3)
'type' =>
array (size=3)
0 => string 'text' (length=4)
1 => string 'text' (length=4)
2 => string 'text' (length=4)
'class' =>
array (size=3)
0 => string 'myclass1' (length=8)
1 => string 'myclass2' (length=8)
2 => string 'myclass3' (length=8)
'id' =>
array (size=3)
0 => string 'myid1' (length=5)
1 => string 'myid2' (length=5)
2 => string 'myid3' (length=5)
Ben sadece aynı şeyi arıyordum ve bir kez daha düşüncelerimin farklı olduğunu fark ettim çünkü ben eski okulum. TEMEL ve PERL'e kadar geri gidiyorum ve bazen PHP'de işlerin ne kadar kolay olduğunu unutuyorum.
Ben sadece 3 sütun olduğu veritabanından tüm ayarları almak için bu işlevi yaptı. setkey, item (key) & value (value) seçin ve aynı tuş / değeri kullanarak yukarıdaki gibi push kullanmadan bunları settings adlı bir diziye yerleştirin.
Gerçekten çok kolay ve basit
// Tüm Ayarları Al
$ Ayarları = getGlobalSettings ();
// Kullanıcı Teması Seçimini Uygula
$ theme_choice = $ ayarlar ['tema'];
.. vs vs vs ....
işlevi getGlobalSettings () {
$ dbc = mysqli_connect (wds_db_host, wds_db_user, wds_db_pass) veya die ("MySQL Hatası:". mysqli_error ());
mysqli_select_db ($ dbc, wds_db_name) veya die ("MySQL Hatası:". mysqli_error ());
$ MySQL = "SELECT * FROM systemSettings";
$ sonuç = mysqli_query ($ dbc, $ MySQL);
while ($ row = mysqli_fetch_array ($ sonuç))
{
$ settings [$ row ['item']] = $ row ['değer']; // PUSH İÇİN GEREK YOK
}
mysqli_close ($ dbc);
$ ayarlarına dön;
}
Yani diğer mesajlar açıklamak gibi ... php kullandığınızda bir dizi "PUSH" gerek yok
Anahtar => Değer
VE ... Önce diziyi de tanımlamanıza gerek yok.
$ Dizi = array ();
Tanımlamaya veya zorlamaya gerek yok. Sadece $ array [$ key] = $ value; Aynı anda otomatik olarak bir itme ve bildirimdir.
Güvenlik nedenleriyle, (P) oor (H) elpless (P) rotection eklemeliyim, Aptallar için Programlama, PHP demek istiyorum .... hehehe Bu kavramı sadece istediğim için kullanmanızı öneririm. Başka herhangi bir yöntem güvenlik riski olabilir. Orada, feragatnamemi yaptım!
array_push($arr, ['key1' => $value1, 'key2' => value2]);
Bu gayet iyi çalışıyor. anahtarı dizideki değeriyle oluşturur
$arrdizinin sonuna yeni bir dizi iter .
Biraz geç ama iç içe bir dizi sakıncası yoksa bu yaklaşımı alabilir:
$main_array = array(); //Your array that you want to push the value into
$value = 10; //The value you want to push into $main_array
array_push($main_array, array('Key' => $value));
Netleştirmek için eğer çıkış json_encode ($ main_array) gibi görünecektir [{ "Key": "10"}]
Biraz garip, ama bu benim için çalıştı
$array1 = array("Post Slider", "Post Slider Wide", "Post Slider");
$array2 = array("Tools Sliders", "Tools Sliders", "modules-test");
$array3 = array();
$count = count($array1);
for($x = 0; $x < $count; $x++){
$array3[$array1[$x].$x] = $array2[$x];
}
foreach($array3 as $key => $value){
$output_key = substr($key, 0, -1);
$output_value = $value;
echo $output_key.": ".$output_value."<br>";
}
merhaba ben aynı sorunu vardı ben bu çözümü bulmak iki dizileri kullanmak sonra ikisini birleştirmek gerekir
<?php
$fname=array("Peter","Ben","Joe");
$age=array("35","37","43");
$c=array_combine($fname,$age);
print_r($c);
?>
başvuru: w3schools
Basit yol:
$GET = array();
$key = 'one=1';
parse_str($key, $GET);
İlk pozisyona ekleme için keyvevalue
$newAarray = [newIndexname => newIndexValue] ;
$yourArray = $newAarray + $yourArray ;
Mevcut bir diziye "anahtar" ve "değer" göndermek için +=kısayol operatörünü kullanabilirsiniz .
Bu çok basit örneğe bakın:
$GET = [];
$GET += ['one' => 1];
Sonuç print_r($GET):
Array
(
[one] => 1
)
Örnek array_merge () ....
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
Dizi ([renk] => yeşil, [0] => 2, [1] => 4, [2] => a, [3] => b, [şekil] => yamuk, [4] => 4 ,)
Burada zaten verilen bazı harika örnekler var. İlişkisel dizi öğelerini kök dizin dizinine itmek için basit bir örnek eklemek yeterlidir.
`$intial_content = array();
if (true) {
$intial_content[] = array('name' => 'xyz', 'content' => 'other content');
}`