php क्या पीएचपी के पास पाइथन की सूची समझ वाक्यविन्यास के बराबर है?




arrays list-comprehension (4)

PHP 5.5 सूची समझ का समर्थन कर सकता है - मेलिंग सूची घोषणा देखें:

और आगे की चर्चा:

पायथन में वाक्य रचनात्मक रूप से मीठी सूची की समझ है:

S = [x**2 for x in range(10)]
print S;
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

PHP में मुझे कुछ लूपिंग करने की आवश्यकता होगी:

$output = array();
$Nums = range(0,9);

foreach ($Nums as $num) 
{
    $out[] = $num*=$num;
}
print_r($out);

लेना:

ऐरे ([0] => 0 [1] => 1 [2] => 4 [3] => 9 [4] => 16 [5] => 25 [6] => 36 [7] => 4 9 [8] => 64 [9] => 81)

क्या PHP में एक समान सूची समझ वाक्यविन्यास प्राप्त करने के लिए वैसे भी है? PHP 5.3 में किसी भी नई सुविधाओं के साथ ऐसा करने के लिए वैसे भी है?

धन्यवाद!


.NET में, पायथन की "वाक्य रचनात्मक रूप से मीठी सूची समझ" के बराबर LINQ है। और PHP में, इसके कई बंदरगाह हैं, जिनमें YaLinqo लाइब्रेरी * शामिल है। संवैधानिक रूप से, यह पारंपरिक संरचनाओं के अनुक्रम के बजाय एसक्यूएल के करीब है और if , लेकिन कार्यात्मक रूप से, यह समान है:

$a = Enumerable::range(0, 10)->select('$v * $v');

यह एक इटरेटर उत्पन्न करता है जो या तो कंसोल के लिए आउटपुट हो सकता है:

var_dump($a->toArray()); // by transforming the iterator to an array
echo $a->toString(', '); // or by imploding into a string

या foreach का उपयोग करने पर पुनरावृत्त:

foreach ($a as $i)
    echo $i, PHP_EOL;

यहां, '$v * $v' function ($v) { return $v * $v; } लिए शॉर्टकट function ($v) { return $v * $v; } function ($v) { return $v * $v; } जो इस पुस्तकालय का समर्थन करता है। दुर्भाग्यवश, PHP बंद होने के लिए शॉर्ट सिंटैक्स का समर्थन नहीं करता है, लेकिन कोड को छोटा बनाने के लिए इस तरह के "स्ट्रिंग लैम्बडास" का उपयोग किया जा सकता है।

वहां कई और विधियां हैं, where ( if समकक्ष) शुरू होता है और समूह groupJoin साथ समाप्त होता है जो समूह के साथ रूपांतरण में शामिल होता है।

* मेरे द्वारा विकसित किया गया


शायद ऐसा कुछ?

$out=array_map(function($x) {return $x*$x;}, range(0, 9))

यह एक पुराने संस्करण में PHP 5.3+ में काम करेगा, आपको array_map अलग-अलग कॉलबैक को परिभाषित करना होगा

function sq($x) {return $x*$x;}
$out=array_map('sq', range(0, 9));





language-comparisons