рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк
PHP рдХреЗ рд▓рд┐рдП LINQ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХрдо рд╣реИ: рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЖрд▓рд╕реА рдЧрдгрдирд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЖрдзреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╣реЛрддреЗ рд╣реИрдВ, рдХреЙрд▓рдмреИрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реАрдорд┐рдд рд╣реИрдВ, рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ LINQ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦреАред рдорд┐рд▓рд┐рдП:
YaLinqo - рдлрд┐рд░ рднреА PHP рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ LINQ
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- PHP рдореЗрдВ рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ .NET LINQ рдкреЛрд░реНрдЯ, рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рдеред рдХреБрдЫ рддрд░реАрдХреЗ рдЧрд╛рдпрдм рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдЬрд╛рд░реА рд╣реИред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, 70 рд╕реЗ рдЕрдзрд┐рдХ рддрд░реАрдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВред
- рдЖрд▓рд╕реА рдЧрдгрдирд╛, рдкрд╛рда рдЕрдкрд╡рд╛рдж, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ, рдЬреИрд╕рд╛ рдХрд┐ рдореВрд▓ LINQ рдореЗрдВ рд╣реИред
- рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд PHPDoc рдкреНрд░рд▓реЗрдЦрдиред MSDN рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд▓реЗрдЦреЛрдВ рдХрд╛ рдкрд╛рдаред
- 100% рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХрд╡рд░реЗрдЬред
- рдХреЙрд▓рдмреИрдХ рдХреЛ рдХрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ "рд▓реИрдореНрдмреНрдбрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд▓реЛрдЬрд░, "рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ" рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдорд╛рдиреЛрдВ рдкрд░ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЛрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЙрд▓рдмреИрдХ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ; рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди рдЪрд╛рдмрд┐рдпрд╛рдБ рдЦреЛ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИрдВред
- рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдиреНрдпреВрдирддрдо рдЖрд╡рд┐рд╖реНрдХрд╛рд░: Iterator, IteratorAggregate, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдЗрдиреНрдпреВрдорд░ рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ); рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рджреЗрд╢реА рд╣реИрдВрдЧ-рдЕрдк рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рддрд░реАрдХреЗ
- рдЬрдирд░реЗрд╢рди: рдЪрдХреНрд░, рдЦрд╛рд▓реАрдЗрдиреЗрдо (рдЦрд╛рд▓реА), рд╕реЗ, рдЙрддреНрдкрдиреНрди, Infinity, toNegativeInfinity, рдореИрдЪ, returnEnum (рд╡рд╛рдкрд╕реА), рд░реЗрдВрдЬ, рд░реЗрдВрдЬрдбрд╛рдЙрди, рд░реЗрдВрдЬрдЯреЛ, рд░рд┐рдкреАрдЯ, рд╕реНрдкреНрд▓рд┐рдЯ;
- рдкреНрд░реЛрдЬреЗрдХреНрд╢рди, рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ: рдЯрд╛рдЗрдк, рд╕реЗрд▓реЗрдХреНрдЯ, рд╕рд┐рд▓реЗрдХреНрдЯ рдореЗрдиреА, рдЬрд╣рд╛рдБ;
- рд╕рдореВрд╣реАрдХрд░рдг, рдХрдиреЗрдХреНрд╢рди: groupJoin, join, groupBy;
- рдПрдХрддреНрд░реАрдХрд░рдг: рд╕рдореБрдЪреНрдЪрдп, рд╕рдореБрдЪреНрдЪрдпрдмреЛрдзрдХ, рдФрд╕рдд, рдЧрд┐рдирддреА, рдЕрдзрд┐рдХрддрдо, maxBy, рдорд┐рдирдЯ, minBy, рдпреЛрдЧ;
- рд╕реЗрдЯ: рд╕рднреА, рдХрд┐рд╕реА рднреА, рд╕рдорд╛рд╣рд┐рдд;
- рдкреЗрдЬрд┐рдВрдЧ: elementAt, elementAtOrDefault, First, FirstOrDefault, firstOrFallback, last, lastOrDefault, lastOrFallback, single, singleOrDefault, singleOrFallback, indexOf, lastIndexOf, findLastIndexex
- рд░реВрдкрд╛рдВрддрд░рдг: toArray, toArrayDeep, toList, toListDeep, toprise, toJSON, toLookup, toKeys, toValues, toObject, toString;
- рдХреНрд░рд┐рдпрд╛: рдХреЙрд▓ (рдХрд░рдирд╛), рдкреНрд░рддреНрдпреЗрдХ (рдлреЙрд░рдПрдЪ), рд▓рд┐рдЦрдирд╛, рд▓рд┐рдЦрдирд╛ред
рдЙрджрд╛рд╣рд░рдг
рдЕрдм рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдХреНрд▓реЛрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рджреЛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рднреА рд╣реЛрддреЗ рд╣реИрдВ: рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд░ рдирд╛рдо (рдХреНрд░рдорд╢рдГ рдореВрд▓реНрдп рдФрд░ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП v рдФрд░ k) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рд╕рд╛рд░реНрдердХ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ (рдпрд╛ рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ, рдпрд╛ рдХреБрдЫ JSON рд╕реЗрд╡рд╛ рд╕реЗ, рдпрд╛ "рдЖрдпрд░рди" рд╕реНрдерд┐рд░рд╛рдВрдХ, рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рд╕реНрд░реЛрдд):
$products = array( array('name' => 'Keyboard', 'catId' => 'hw', 'quantity' => 10, 'id' => 1), array('name' => 'Mouse', 'catId' => 'hw', 'quantity' => 20, 'id' => 2), array('name' => 'Monitor', 'catId' => 'hw', 'quantity' => 0, 'id' => 3), array('name' => 'Joystick', 'catId' => 'hw', 'quantity' => 15, 'id' => 4), array('name' => 'CPU', 'catId' => 'hw', 'quantity' => 15, 'id' => 5), array('name' => 'Motherboard', 'catId' => 'hw', 'quantity' => 11, 'id' => 6), array('name' => 'Windows', 'catId' => 'os', 'quantity' => 666, 'id' => 7), array('name' => 'Linux', 'catId' => 'os', 'quantity' => 666, 'id' => 8), array('name' => 'Mac', 'catId' => 'os', 'quantity' => 666, 'id' => 9), ); $categories = array( array('name' => 'Hardware', 'id' => 'hw'), array('name' => 'Operating systems', 'id' => 'os'), );
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд╛рд░реНрдп: рдЧреИрд░-рд╢реВрдиреНрдп рдорд╛рддреНрд░рд╛ рд╡рд╛рд▓реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреБрдХреНрдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рддреНрд░рд╛ рдХреЗ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдкрд╣рд▓реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ, рдлрд┐рд░ рдирд╛рдо рд╕реЗред рдирд╛рдо рд╕реЗ рдЫрд╛рдВрдЯреЗ рдЧрдП рд╢реНрд░реЗрдгрд┐рдпрд╛рдБред рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░рд┐рдд):
Array ( [hw] => Array ( [name] => Hardware [products] => Array ( [0] => Array ( [name] => Mouse [catId] => hw [quantity] => 20 [id] => 2 ) [1] => Array ( [name] => CPU [catId] => hw [quantity] => 15 [id] => 5 ) [2] => Array ( [name] => Joystick [catId] => hw [quantity] => 15 [id] => 4 ) [3] => Array ( [name] => Motherboard [catId] => hw [quantity] => 11 [id] => 6 ) [4] => Array ( [name] => Keyboard [catId] => hw [quantity] => 10 [id] => 1 ) ) ) [os] => Array ( [name] => Operating systems [products] => Array ( [0] => Array ( [name] => Linux [catId] => os [quantity] => 666 [id] => 8 ) [1] => Array ( [name] => Mac [catId] => os [quantity] => 666 [id] => 9 ) [2] => Array ( [name] => Windows [catId] => os [quantity] => 666 [id] => 7 ) ) ) )
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд PHP 5.3 рд╕реЗ рдХреНрд▓реЛрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рд░рд┐рдХреЙрд░реНрдб, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдИрдбреАрдИ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд░реНрдердиред
from($categories) ->orderBy(function ($cat) { return $cat['name']; }) ->groupJoin( from($products) ->where(function ($prod) { return $prod["quantity"] > 0; }) ->orderByDescending(function ($prod) { return $prod["quantity"]; }) ->thenBy(function ($prod) { return $prod["name"]; }), function ($cat) { return $cat["id"]; }, function ($prod) { return $prod["catId"]; }, function ($cat, $prods) { return array("name" => $cat["name"], "products" => $prods); } );
рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧред рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рдИрдВ рдУрд░ "==>" рддрд░реНрдХ рдирд╛рдо рд╣реИрдВ, рджрд╛рдИрдВ рдУрд░ рд╡рд╛рдкрд╕реА рдорд╛рди рд╣реИред
from($categories) ->orderBy('$cat ==> $cat["name"]') ->groupJoin( from($products) ->where('$prod ==> $prod["quantity"] > 0') ->orderByDescending('$prod ==> $prod["quantity"]') ->thenBy('$prod ==> $prod["name"]'), '$cat ==> $cat["id"]', '$prod ==> $prod["catId"]', '($cat, $prods) ==> array("name" => $cat["name"], "products" => $prods)' );
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ред рдпрджрд┐ рдХреЛрдИ рдСрдкрд░реЗрдЯрд░ "==>" рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП v, рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП k, рдФрд░ a, рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рддреБрд▓рдирд╛рддреНрдордХ рдорд╛рди рдЖрджрд┐ред
from($categories) ->orderBy('$v["name"]') ->groupJoin( from($products) ->where('$v["quantity"] > 0') ->orderByDescending('$v["quantity"]') ->thenBy('$v["name"]'), '$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)' );
(рд╕рдВрджреЗрд╣рдкреВрд░реНрдг) рд╡рд╛рд╕реНрддреБ рд╕рдорд╛рдзрд╛рди
рдЖрдк рдореВрд▓ LINQ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдХреЙрдкреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдПрдБ, рд╡рд┐рднрд┐рдиреНрди рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рд╡рд┐рднрд┐рдиреНрди рд╕реБрд╡рд┐рдзрд╛рдПрдБред рдЗрд╕рд▓рд┐рдП, рдЕрдХреНрд╕рд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред рдЖрдкрдХреЗ рд▓рд┐рдП рдиреНрдпрд╛рдп рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдпрд╛ рдмреБрд░рд╛ рд╣реИред рдЪрд░реНрдЪрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдЪрд╛рдмрд┐рдпрд╛рдБ
рдЖрдЗрдП рд╕рдмрд╕реЗ рд╕рдВрджрд┐рдЧреНрдз рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ: рдЪрд╛рдмрд┐рдпрд╛рдБ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреБрдХрдбрд╝рд╛ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдХрд╛рд░рдг: рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрд╢реА рдкреЛрдХрдкрд╢рдиреЗрд╣ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рд╡реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, JSON рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╡реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, PHP рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдирдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореВрд▓ LINQ рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдХреЛрдИ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреА рд╣реЛрдЧреА (рдЕрдм рд╡реЗ рд╕рднреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ), рдФрд░ LINQ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ: resultSelector resultSelectorValue + resultSelectorKey рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдХреЙрд▓рдмреИрдХ рдХреЛ рдХрдо рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рднреА LINQ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИрдВред
рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╣рд░ рдЬрдЧрд╣ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЙрдкрдЬреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдЫрд╛рдВрдЯрддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдХреБрдВрдЬреА рд╣реЛрдЧреАред PHP рдЖрдорддреМрд░ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрдирд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рджреЛ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╣реИрдВ:
- рдЕрдВрддрд┐рдо рдСрдкрд░реЗрд╢рди рдХреЗ рдмрдЬрд╛рдп,ред
- рдХреЙрд▓ toValues тАЛтАЛрд╡рд┐рдзрд┐ - array_values тАЛтАЛрдХреЗ рдмрд░рд╛рдмрд░, рд▓реЗрдХрд┐рди рдЪрдпрди рдХреА рддрд░рд╣ рдЖрд▓рд╕реАред
рддрд░реНрдХ рдЖрджреЗрд╢
рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рдХреНрд░рдо рдкрд░ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрджрд┐рдЧреНрдз рдирд┐рд░реНрдгрдп рд╣реИред рд╡реЗ рд╣рдореЗрд╢рд╛ (рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ) рд╕рдмрд╕реЗ рдХрдо рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░рдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдХреЙрд▓рдмреИрдХ рдореЗрдВ, рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЖрдорддреМрд░ рдкрд░ рдореВрд▓реНрдп рдЖрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреБрдВрдЬреА, рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓реНрдп рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рддрд░реНрдХреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЕрдм рдФрд░ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрдпрди рдореЗрдВ, рдорд╛рди рдХреЛ рдкрд╣рд▓реЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЯреЙрдкрдСрд░реНрдбрд░ рдореЗрдВ, рдХреБрдВрдЬреА рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо pokhapeshniki рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдкрдорд╛рди рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдкреВрд░реА рднрд╛рд╖рд╛ рддрд░реНрдХ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо (рдПрдХ рд╣реА рд╕реБрдИ рдФрд░ рд╣реИрд╕реНрдЯреИрдХ) рдХреЗ рд╕рд╛рде mottled рд╣реИред
рдЖрдЗрдЯрдо рд╕рдВрдХреЗрдд
рдореВрд▓ LINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди: indexOf рдЬреИрд╕реЗ рддрд░реАрдХреЗ, elementAt рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рди рдХрд┐ рдЧрдгрдирд╛ рдореЗрдВ рддрддреНрд╡ рдХреА рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕реНрдерд┐рддрд┐ред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ toValues тАЛтАЛрдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ - рдХреБрдВрдЬреА рдХреНрд░рдорд┐рдХ рд╣реЛ рдЬрд╛рдПрдЧреА: 0, 1, 2, 3, рдЖрджрд┐ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, toValues тАЛтАЛрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд▓рдореНрдмреЗ рддрд░реНрдХ
Linq.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рдЬрд┐рд╕реЗ рдореБрдЭреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рднреА рдХреЙрд▓рдмреИрдХ рдореЗрдВ $ $, $ $, $ $ $, $ $ $, рдЬреИрд╕реЗ рддрд░реНрдХ рд╣реИрдВред PHP рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЛрдб рдХреЛ рд╡реИрдз рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рднрд▓реЗ рд╣реА рд╡рд╣ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрджрд░ рд╣реЛред рдореИрдВ $ a, $ b, $ c рджреЛрдиреЛрдВ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЦрд╛рд▓реА рдирд╣реАрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ред рдЗрд╕рд▓рд┐рдП, рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдиреБрд░реВрдк рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛:
- рдЖрдорддреМрд░ рдкрд░ v рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп, k рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП
- рдпрджрд┐ рдХрдИ рдорд╛рди рд╣реИрдВ, рддреЛ v1 рдФрд░ v2
- рдпрджрд┐ рдорд╛рди рдПрдХ рдЕрдиреБрдХреНрд░рдо рд╣реИ, рддреЛ рдИ
- рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдмреИрдЯрд░реА рдХреЗ рд▓рд┐рдП - рдП
- рддреБрд▓рдирд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП - рдП рдФрд░ рдмреА
- (рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рднреВрд▓ рдЧрдП)
рдЦрд╛рдореА: рдЖрдкрдХреЛ рдирд╛рдо рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
"рд╕рдВрджрд┐рдЧреНрдз" рд╕рдВрдЧреНрд░рд╣
рдХреЛрдИ рд╕реВрдЪреА рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИ, рдЯреЙрд▓рд┐рд╕реНрдЯ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдРрд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреБрдВрдЬреА (0, 1, 2, рдЖрджрд┐) рдХреЗ рд╕рд╛рдеред
рдбрд┐рдХреНрд╢рдирд░реА рдХреНрд▓рд╛рд╕ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рд▓реБрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдЕрдм рдПрдХ рдЕрд▓рдЧ рдкреВрд░реНрдг рд╕рдВрдЧреНрд░рд╣ рдмрди рдЧрдпрд╛ рд╣реИред рд╕рд╛рдзрд╛рд░рдг рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡рд╕реНрддреБрдПрдВ рдХреБрдВрдЬреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рд╕рдВрднрд╡рддрдГ рдореВрд▓ LINQ рдореЗрдВ)ред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, LINQ рдЦреБрдж рд╣реА рд╣рд░ рдЬрдЧрд╣ рдкреНрд░рдореБрдЦ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PHP рдЖрдкрдХреЛ рдлреЛрд░рдЪреЗрдХ рдореЗрдВ рдкреНрд░рдореБрдЦ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЖрдк рд╕рднреА рдЪрдХреНрд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЦреЗрд▓ рдореЛрдордмрддреНрддреА рдХреЗ рд▓рд╛рдпрдХ рдХрд┐рддрдирд╛ рд╣реИ рдпрд╣ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред
рд▓реБрдХрдЕрдк рдХреНрд▓рд╛рд╕ рд╣реИред рдХреБрдВрдЬреА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА (рдпрд╛ рдпрджрд┐ рдХреЛрдИ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ рддреЛ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА) рджреЗрддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рд╕рдВрдЧреНрд░рд╣ рдПрдХ рдПрд░реЗ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред
MSDN рд╕реЗ рдкреНрд░рд▓реЗрдЦрди
MSDN рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдХреЛ рд╕рднреА рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛, рдлрд┐рд░ рдкреЛрд░реНрдЯ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдХрд╣реАрдВ рд╡рд┐рд╡рд░рдг рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рд╣реИрдВред рдХрд╣реАрдВ - рдХрд╣реАрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓рддреА рд╣реИрдВ - рд░рд┐рдкреЛрд░реНрдЯред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрд╣реБрдд рдареЛрд╕ рдерд╛ред рдХреБрдЫ рддрд░реАрдХреЗ рдмреАрдорд╛рд░ рдирд╣реАрдВ рд╣реИрдВ рдРрд╕реЗ рд▓реЗрдЦред
рд╡рд┐рдзрд┐ рдирд╛рдо
PHP рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЛ рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдпрдВ рдФрд░ рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЦрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрд╣рд╛рдВ рд╕рдВрдШрд░реНрд╖ рд╣реЛрддреЗ рд╣реИрдВ, рддрд░реАрдХреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдореВрд▓ рд╡рд┐рдзрд┐ рдирд╛рдо рдХреЛрд╖реНрдардХ рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВ)ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд░рди / рдлреЙрд░рдПрдЪ рдХреЙрд▓ / рдкреНрд░рддреНрдпреЗрдХ рдмрди рдЧрдпрд╛ред
рдЕрдкрд╡рд╛рдж рдирд╛рдо
PHP рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ .NET рдореЗрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рддреЛ, InvalidOperationException рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд Vueue рдЕрдкрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдСрдкрд░реЗрд╢рди рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдерд┐рд░ рдЫрдБрдЯрд╛рдИ
рдХреНрд░рдордмрджреНрдз рдЕрд╕реНрдерд┐рд░ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдиреЗрд╕реНрдЯреЗрдб рдРрд░реЗ рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рджреНрд╡рд╛рд░рд╛
[[0,1], [1,0], [0,2]]
рдХреЛ рдЫрд╛рдВрдЯрддреЗ рд╕рдордп, рдХреЛрдИ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рдХрд┐
[0,1]
рдФрд░
[0,2]
рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЪрд▓реЗ рдЬрд╛рдПрдВрдЧреЗ рдЙрд╕ рдХреНрд░рдо рдореЗрдВред рдкрд░рд┐рдгрд╛рдо рджреЛрдиреЛрдВ
[[0,1], [0,2], [1,0]]
, рдФрд░
[[0,2], [0,1], [1,0]]
ред
рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ PHP рдореЗрдВ рд╕реНрдерд┐рд░ рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдВрджрд░ usort рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдореВрд▓ LINQ рдХреА рддрд░рд╣ рдХреНрд░рдордмрджреНрдз рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рд░рдирдЯрд╛рдЗрдо рдФрд░ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЬрдм рд╕реЗ рд╣рдо "PHP рдкрде" рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣реЗ рдереЗ, рдЕрд╕реНрдерд┐рд░рддрд╛ PHP рдореЗрдВ рд╣реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдЕрдиреНрдп
рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХрд╡рд░реЗрдЬ рд▓рдЧрднрдЧ 100% рд╣реИред
рд▓рд╛рдЗрд╕реЗрдВрд╕ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдмреАрдПрд╕рдбреА (рджреЛ-рдмрд┐рдВрджреБ) рд╣реИред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ - PHP 5.3ред
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
require_once __DIR__ . '/lib/Linq.php';
рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА рдЬреЛрдбрд╝реЗред рдЙрдирдХреА рддреБрд▓рдирд╛ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдореЗрдВ рд╣реЛрдЧреАред

рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдВрд╡рджрдВрддреА, рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд░реНрде рдХреЗ рд╕рд╛рде:
- рд▓рд╛рд▓ - рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ
- рдкреАрд▓рд╛ - рддреАрд╕рд░реА рдХрдХреНрд╖рд╛ рд╢рд╛рджреА рдирд╣реАрдВ рд╣реИ
- рд╣рд░реЗ рд░рдВрдЧ рдХреА рдЪреАрдЬ рд╣реИ
- рдиреАрд▓рд╛ - рдорд░рд╛ рд╣реБрдЖ
рдореИрдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред рд░реВрд╕реА рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рд▓рдВрдмрд╛ рдирд┐рдХрд▓рд╛ред
рдореЗрд░реЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдлреНрдд рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдХреЛрдИ рднреА рдкреИрд╕рд╛ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЙрджрд╛рд░рддрд╛ рдХрд╛ рд╣рдорд▓рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╕ PHP рдФрд░ PHPStorm рдореЗрдВ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рд╡реЗ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реЛрдЧрд╛ред
рдкреАрдПрдЪрдкреА
- Iterator :: key () рдХреЛ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
- 45684 рдХреБрдВрдЬреА-рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдЬреНрдЮреЗрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдлреЛрд░рдЪреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз
- рдХреНрд▓реЛрдЬрд░ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдереА, рдФрд░ рдкреИрдЪ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдЖрджрд┐ рд╕рдВрд▓рдЧреНрди рдереЗ - рдбреЗрд╡рд▓рдкрд░ рдЬрд┐рд╕рдиреЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдерд╛ рдЙрд╕рдиреЗ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо "рдиреЗрдлрд┐рдЧ рдиреАрдб" рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред :-(
PHPStorm IDE
- рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЕрдВрджрд░ PHP рдХреЛрдб
- WI-3477 рдореБрдЦрд░ ('рд╢рд╛рдмреНрджрд┐рдХ') рдХреЗ рдЕрдВрджрд░ PHP рднрд╛рд╖рд╛ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛, рд╕рдорд╛рди рдФрд░ рд╕рдорд╛рди
- WI-2377 рдЗрдВрдЬреЗрдХреНрд╢рди рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрджрд░ php рдЪрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдирд╣реАрдВ рд╣реИ
- PHP рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг
- WI-11110 рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рдзрд┐: рдмрдВрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐
- PHPDoc рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
- WI-8270 PhpDoc рддреНрд╡рд░рд┐рдд рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЕрдЧрд░ {рд▓рд┐рдВрдХ} рдПрдХ рд▓рд╛рдЗрди рдореЗрдВ рджреЛ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ
рд▓рд┐рдВрдХ
GitHub рд╕реЗ PHP рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ LINQ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВPS рдореБрдЭреЗ рдмрддрд╛рдПрдВ, рдХреГрдкрдпрд╛, рдЬрд╣рд╛рдВ рдЖрдк рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд▓реЗрдЦ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред