Neden hemen patladı dizi elemanını erişemiyor?

6 Cevap php

Neden hemen döndürdüğü dizideki öğeleri erişemiyor explode()?

Örneğin, bu işe yaramazsa:

$username = explode('.',$thread_user)[1]; 
//Parse error: syntax error, unexpected '[

Ama bu kod yapar:

$username = explode('.',$thread_user); 
$username = $username[1];

PHP değil, genellikle program yapmak, bu benim için oldukça kafa karıştırıcı.

6 Cevap

Aslında, PHP sadece bu sözdizimi desteklemiyor. (Örneğin) JavaScript gibi dillerde, çözümleyici işlemlerini zincirleme / daha karmaşık yuvalama işleyebilir, ancak PHP bu dillerden biri değil.

Ne istediğinizi nasıl açık değildir nedeni explode false return olmasıdır. Bunu içine endeksleme önce dönüş değerini kontrol etmelisiniz.

() Bir dizi döndürür patlayabilir yana, böyle $username = current(explode('.',$thread_user)); gibi diğer fonksiyonları kullanabilirsiniz

Ben sadece kendi işlevini kullanın:

function explodeAndReturnIndex($delimiter, $string, $index){
    $tempArray = explode($delimiter, $string);
    return $tempArray[$index];
}

örnek için kod sonra olacaktır:

$username = explodeAndReturnIndex('.', $thread_user, 1);

Burada bir satır aşağı almak için:

$username = current(array_slice(explode('.',$thread_user), indx,1));

indx patladı diziden istediğiniz dizin nerede. Ben php yeni ama ben diyerek patladı diziyi beğendim :)

Bu sürüm bağımlı bulunuyor. PHP 5.4 döndürülen dizi erişirken desteklemiyor.