Soru PHP'yi çağırmak ilk elementi patlatıyor ve içeri giriyor mu? [çift]


Olası Kopyalama:
Dereferencing işlevi sonucu için PHP sözdizimi 

Benzeyen bir ipim var 1234 # 5678. Şimdi bunu arıyorum:

$last = explode("#", "1234#5678")[1]

Çalışmıyor, bazı sözdizimi hatası var ... ama nerede? Beklediğim 5678 $last. Bu PHP'de çalışmıyor mu?


25
2018-01-11 11:24


Menşei


Bu PHP'de mümkün değildir. - Pekka 웃
Bunu, geçerli 5.3'de değil, PHP 5.4'te yapabileceksiniz (Array Dereferencing). - Gérald Croës


Cevaplar:


Mevcut PHP sürümlerinde (diziler) dizi dizisi yapılamıyor. Ama sen kullanabilirsin list  [Dokümanlar] dizi elemanlarını değişkenlere doğrudan atamak için:

list($first, $last) = explode("#", "1234#5678");

GÜNCELLEŞTİRME

PHP 5.4'ten (01-Mart-2012) beri destekleniyor dizi dereferencing.


29
2018-01-11 11:28



ve dize içinde çok sayıda değeriniz varsa, o zaman $ last = end kullanabilirsin (explode ('#', $ string)); - Govind Totla
Liste için alternatif list(,$last) = ..... O zaman ihtiyacınız olmadığında ilk değişkeni askıya almayacaksınız. - Tyler Christian


Büyük olasılıkla PHP sözdizimi ile karıştırılıyor. Sadece sonucunu ata explode bir dizi değişkeni ve sonra dizini kullanın:

$arr = explode("#", "1234#5678");
$last = $arr[1];

10
2018-01-11 11:26



Vay, bu berbat: D ... Tamam, şimdi biliyorum. - EOB
doğrul! kahretsin, sen kazandın :) - Rob Agar


Bunu bir satırda nasıl indireceğiniz aşağıda açıklanmıştır:

$last = current(array_slice(explode("#", "1234#5678"), indx,1));

Nerede indx dizinde istediğiniz dizindir, örneğinizde 1'dir.


6
2018-05-06 12:42





Bunu yapamazsın:

explode("#", "1234#5678")[1]

Çünkü explode bir işlev değil, bir dizidir. Elbette bir dizi döndürür, ancak PHP'de bir diziye ayarlanana kadar işlevi bir dizi olarak ele alamazsınız.

Böyle yapılır:

 $last = explode('#', '1234#5678');
 $last = $last[1];

5
2018-01-11 11:29





PHP biraz loş olabilir. Bunu muhtemelen iki satırda yapmanız gerekir:

$a = explode("#", "1234#5678");
$last = $a[1];

3
2018-01-11 11:26