PDA

View Full Version : سوال: تبدیل آرایه چند بعدی به یک بعدی



mortaza_ngz
یک شنبه 15 اسفند 1395, 14:51 عصر
سلام دوستان من یه ارایه چند بعدی هس میخوام تک بعدی کنم از روش بازگشتی استفاده میکنم ولی به جواب نمی رسم
نمونه ارایه رو گذاشتم


echo"<pre>";
$b = array(
array(
"id"=>1,
"parent"=>0 ,
"order"=>0 ,
),
array(
"id"=>22,
"parent"=>1 ,
"order"=>0 ,
),
array(
"id"=>11,
"parent"=>1 ,
"order"=>1 ,
),
array(
"id"=>23,
"parent"=>11 ,
"order"=>0 ,
),
array(
"id"=>14,
"parent"=>11 ,
"order"=>1,
),
array(
"id"=>3,
"parent"=>0 ,
"order"=>2,
),
array(
"id"=>4,
"parent"=>0 ,
"order"=>3,
),
array(
"id"=>5,
"parent"=>0 ,
"order"=>4,
),
);


$a = array(
array(
"id"=>1,
"order"=>0,
"children"=>array(
array(
"id"=>22,
"order"=>0,
),
array(
"id"=>11,
"order"=>1,
"children"=>array(
array(
"id"=>23,
"order"=>0,
),
array(
"id"=>14,
"order"=>1,
),
),
),
)
),
array(
"id"=>3,
"order"=>2
),
array(
"id"=>4,
"order"=>3
),
array(
"id"=>5,
"order"=>4
)
);
print_r($a);




print_r($b);


?>

samdoft
یک شنبه 15 اسفند 1395, 20:43 عصر
سلام این آرایه ای که شما گذاشتید (به طور مثال آرایه $b) ارایه ی انجمنی هستش و اگه بخوای تک بعدیش کنی امکان پذیر نیست چون اندیس های متنی یکسان دارن (مثلا "id") تنها راهش اینه که شما اندیس ها رو حذف کنی و فقط مقادیر عددی رو در یک آرایه تک بعدی معمولی ذخیره کنی مثلا برای تک بعدی کردن آرایه $b کدش اینه:



$newarray =[];
foreach($b as $value)
{
foreach($value as $val)
{
$newarray[] = $val;
}
}
print_r($newarray);


امیدوارم مفید باشه...