فلت کردن آرایه چند بعدی در پی اچ پی

فلت کردن آرایه چند بعدی در پی اچ پی

سلام. امروز قصد داریم یک مسئله php مطرح کنیم و سپس راهکاری مناسب برای آن ارائه دهیم. همانطور که در عنوان ذکر شد ما یک آرایه چند بعدی (تعداد بعد و عمق آرایه مشخص نیست) داریم و قصد داریم تمام مقادیر آن را در یک آرایه با یک بعد قرار دهیم. به این کار فلت کردن می گویند. به مثال زیر توجه کنید:

Array(
	'snippets.ir',
	'MahdiY' => array(
		'MahdiY.IR',
		'php.net'
	),
	'Mohammad' => array(
		'persianscript.ir' => array(
			'persianscript.ir',
			'forum.persianscript.ir',
			'up.persianscript.ir'
		),
		'woocommerce.ir'
	)
)

در آرایه بالا ما تعدادی آدرس سایت داریم. ابتدا آدرس سایت snippets.ir به عنوان آدرس اصلی، سپس آدرس وب سایت های کاربر MahdiY و در ادامه وب سایت های کاربر Mohammad که خود دارای چند بخش می باشد. اکنون ما قصد داریم آدرس وب سایت هایی که در این آرایه قرار دارد را فارغ از اینکه این آدرس برای چه کاربری است و در کجای آرایه قرار دارد بدست آوریم.

به کد زیر و نحوه استفاده از کلاس ها دقت کنید:

$sites = Array(
	'snippets.ir',
	'MahdiY' => array(
		'MahdiY.IR',
		'php.net'
	),
	'Mohammad' => array(
		'persianscript.ir' => array(
			'persianscript.ir',
			'forum.persianscript.ir',
			'up.persianscript.ir'
		),
		'woocommerce.ir'
	)
);

$sites = new RecursiveIteratorIterator( new RecursiveArrayIterator( $sites ) );

foreach( $sites as $site )
	echo $site . "\n";

در خط 17 ابتدا آرایه به وسیله RecursiveArrayIterator خوانده می شود و سپس با استفاده از کلاس RecursiveIteratorIterator تمام زیر آرایه ها مرور می شوند. خروجی کد بالا لیستی از آدرس های وب سایت موجود در آرایه می باشد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.