PDA

View Full Version : سوال: چطور یک متغیر شامل چند ارایه رو با حلقه foreach پیمایش کنم



Mahbobe.prog
چهارشنبه 09 مهر 1393, 09:20 صبح
سلام وقت بخیر

متد listFolderFiles() خروجی اون چند تا ارایه س که داخل یه متغیر ریخته شده . من ازین متد داخل متدی دیگه استفاده کردم میخام که ارایه های اون پیمایش بشه ولی وقتی از foreach استفاده کردم به متغیر $array ارور میگیره باید چیکار کنم؟

function listFolderFiles($dir) {
$ffs = scandir($dir);
$files = array() ;
foreach($ffs as $ff)
{
if($ff != '.' && $ff != '..')
{
$files[] = $ff ;
if(is_dir($dir.'/'.$ff))
$files[] = $this -> listFolderFiles($dir.'/'.$ff);
}
}
//return $files ;
var_dump($files) ;
}


اینم نتیجه اجرای متد NameDB()

function NameDB($dir) { $this -> dbName = array() ; $array = $this -> listFolderFiles($dir) ; $is = is_array($array) ; var_dump($is) ;/* foreach($array as $num => $fields) { $name = basename($fields); $this -> dbName[] = (chop($name , '.php')) ; }*/ return $this -> dbName ; }



array(1) { [0]=> string(7) "db1.php" } array(1) { [0]=> string(7) "db2.php" } array(6) { [0]=> string(10) "subSql.php" [1]=> string(11) "subsql1.php" [2]=> string(4) "ver1" [3]=> NULL [4]=> string(4) "ver2" [5]=> NULL }

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\cms\CMSclass.php on line 11

kazemimorteza
چهارشنبه 09 مهر 1393, 11:18 صبح
از foreach به صورت تو در تو استفاده کن .ممکنه مشکلت حل بشه.

Mahbobe.prog
یک شنبه 13 مهر 1393, 23:25 عصر
نه خب داخل تابع NameDB() وقتی از خروجی تابعlistFolderFiles() var_dump میگیرم نتیجه false هستش یعنی اصلا ارایه نیس که بخام از
foreach به صورت تو در تو استفاده کنم من اینجا اشتباه شده که همون اول از foreach استفاده کردم ارورش واسه همینه
باید چیکار کنم تا بشه ارایه های داخل متغیر $array رو پیمایش کنم؟

شاهرخ عشایری
شنبه 19 مهر 1393, 00:35 صبح
دوست عزیز باید توجه داشته باشی که خروجی دستوری که فرمودید آرایه ایست از آرایه ها. یعنی برای پیمایش باید از حلقه های متداخل استفاده کنید.