سلام دوستان ، ممنون میشم به من کمک کنید .
من توی برنامم می خوام یک آرایه چند سطحی را بر اساس عناصر داخل یک آرایه دیگه فیلتر کنم . ولی با کدی که نوشتم فقط عنصر آخر آرایه دوم رو در نظر میگیره و آرایه اول را برای من فیلتر میکنه .
بذارین کارکردی که انتظار دارم را هم براتون توضیح بدم که بهتر متوجه بشین شاید کلا دارم اشتباه میرم :
ببینین آرایه اول لیستی از محصولاته که مواردی برای منع مصرف محصول هم داخلشه ولیست بعدی موارد منع مصرف مشتریه . میخوام تک تک موارد منع مصرف مشتری توی لیست محصولات چک بشه و اون محصولاتی که اون منع مصرف ها را دارن حذف بشن و نهایتاً یک لیست محصول از محصولاتی که اون منع مصرف ها را ندارن به من برگردونه.
کدی که نوشتم اینه :
$tosie_sobh = array_filter($product_sobh , function($item) use ($mane_masraf_moshtari){
foreach ($mane_masraf_moshtari as $i) {
if (is_string($i)==true){
$n = explode(",",$i);
foreach ($n as $m) {
return strstr($item['mane_masraf'],$m) == false ;
}}elseif ($i == null){
$i='هیچی';
return strstr($item['mane_masraf'],$i) == false ; }else{
return strstr($item['mane_masraf'],$i) == false ; }
}
});
ببین با همون مدل قبلی دیتابیست کار میکنه؟
$tosie_sobh = array_filter($product_sobh, function ($product) use ($mane_masraf_moshtari) {
$product_mane_masraf = trim($product['mane_masraf']);
if(empty($product_mane_masraf))
return true;
foreach ($mane_masraf_moshtari as $mane_moshtari) {
if (empty($mane_moshtari))
continue;
if (is_string($mane_moshtari))
foreach(explode(",", $mane_moshtari) as $mane)
if(strstr($product_mane_masraf,trim($mane)))
return false;
}
return true;
});
یک نکته جدید هم اضافه شده که منع ها تماما اون چیزهای ندیدنی شون هرس میشه یا همون trim واسه white space ها مثل فاصله، خط بعدی و...
😍😍😍😍😍وای کاملا درست شد ...
نمیدونم چطوری ازتون تشکر کنم واقعااا
اشکمو در آورده بود 3 ، 4 روز بود . مطمئن نیستم درست فهمیده باشم ایراد کارم رو . میتونم توی واتساپ ازتون بخوام اشتباهم رو برام ویس کنید ؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟