2012-08-11 22 views
14

Bir dizi döndüren bir işlev var. Sadece ilk satır döndürür başka bir işlevi vardır, ama nedense, benim bir ara değişkeni kullanabilirsiniz yapar, yani bu başarısız:PHP Dizi Sözdizimi Ayrıştırma Hatası Sol Kare Braket "["

function f1(/*some args*/) { 
    return /*an array*/; 
} 
function f2(/*some args*/) { 
    return f1(/*some args*/)[0]; 
} 

. . . ile:

Parse error: syntax error, unexpected '[' in util.php on line 10

Fakat, bu çalışır: "?"

function f1(/*some args*/) { 
    return /*an array*/; 
} 
function f2(/*some args*/) { 
    $temp = f1(/*some args*/); 
    return $temp[0]; 
} 

(benim aramalar kişiler tarafından bocalama tuttu "{" şey uygun çevrimiçi bulmak mümkün değildi, "< ", vb.).

PHP'de kendim öğreniyorum - bunu doğrudan yapamamış olmamanın bir nedeni var mı?

+1

[mümkün PHP'de anonim dizinin belirli bir öğeye başvuru mı?] Olası yinelenen (http sadık zorunda : //stackoverflow.com/questions/8276224/is-it-possible-to-reference-a-specific-element-of-an-anonymous-array-in-php) – DCoder

+1

olası yinelemesi [Erişim PHP dizi öğesi ile bir işlevi?] (http://stackoverflow.com/questions/396519/access-php-array-element-with-a-function) –

+0

Dil 5.4.0'a kadar izin vermeyin. –

cevap

25

Yukarıdaki PHP 5.4.0 ve kadar

return f1(/*some args*/)[0]; 

dereferencing fonksiyon dizisi kullanamaz.

+0

Ross önce bunu başardı. Bunun için uygun terimi açığa vurmak için – imallett

+1

sahne, bu basit bir soru ne olması gerektiği için uzun bir arama sona erdi. –

2

Bu davranışın nedeni, PHP işlevlerinin JavaScript işlevleri gibi zincirlenememesidir. Sadece document.getElementsByTagNames('a')[0] gibi mümkündür.

PHP sürümü için ikinci yaklaşımın < 5,4

Function array dereferencing has been added, e.g. foo()[0].

http://php.net/manual/en/migration54.new-features.php

İlgili konular