قبلا در php 7.4 ، قابلیت unpack وجود داشت اما فقط برای آرایه لیست هایی با کلید ساده و عددی عمل میکرد اما در نسخه جدید این قابلیت اضافه شده که شامل همه آرایه ها میشود .
برای ترکیب آرایه ها باهم درست مثل جاوااسکریپت از ... قبل از مقدار ها استفاده میکنیم ؛ اما در نسخه ۷.۴ برای ترکیب آرایه های رشته ای باید از تابع array_merge استفاده میشد ، حال با این نسخه جدید این قابلیت بدون خطا قابل دسترس هست.
<?php $array = [0 => 'lorem',1=>'ipsum']; $array2 = [0 => 'amet']; $arrayMerged = [...$array,...$array2]; var_dump($arrayMerged); // [0 => 'lorem',1 => 'ipsum' , 3 => 'amet']; $array1 = ['x' => 'y']; $array2 = ['z' => 't']; $arrayMerged = [...$array1,...$array2]; var_dump($arrayMerged);// Fatal error: Cannot unpack array with string keys in ... on line ...
در نسخه 8.1
<?php $array = [0 => 'lorem',1=>'ipsum']; $array2 = [0 => 'amet']; $arrayMerged = [...$array,...$array2]; var_dump($arrayMerged); // [0 => 'lorem',1 => 'ipsum' , 3 => 'amet']; $array1 = ['x' => 'y']; $array2 = ['z' => 't']; $arrayMerged = [...$array1,...$array2]; var_dump($arrayMerged); //No Fatal error here :)
این خطا دیگه وجود نداره !
پس در نتیجه تا قبل نسخه 8.1 ، برای ترکیب آرایه های رشته ای می بایست از تابع array_merge استفاده میشد ولی حال با چند نقطه ساده این عمل انجام می شود همچون جاوااسکریپت . :)
<?php $list = ["a", "b", "c"]; array_is_list($list); // true $notAList = [1 => "a", 2 => "b", 3 => "c"]; array_is_list($notAList); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); // false
همینطور که قابل مشاهده این تابع به صورت بولین هر لیستی که کلید ندارد را true و هر لیستی که به صورت رشته یا عدد هست را با خروجی false نمایش میدهد.