PDA

View Full Version : سوال: راهنمایی در رابطه با دریافت یک مقدار از آرایه اول و جست وجوی این مقدار در آرایه دوم



Ali_Sedaghat
یک شنبه 06 آبان 1397, 15:51 عصر
با سلام خدمت تمامی اساتید بزرگوار
در رابطه با آرایه ها با مشکل مواجه شدم که از شما بزرگواران تقاضای کمک دارم.
فرض کنید که ما دو تا آرایه داریم.
آرایه های A و B با مقادیر زیر ساخته شده اند.
با این دستور آرایه رو ساختم:



$Array_A = array["Ali","Ahmad","Hasan","Hosein","Mohammad"]
$Array_B = array["Ahmad","Hasan","Hosein"]


حالا ما می خوایم مقادیری که توی آرایه A هست رو در کل آرایه B جست وجو کنیم و مقادیری که در آرایه اول وجود دارن اما در آرایه دوم موجود نیست رو در آرایه دیگری مثلا آرایه C ذخیره کنیم.
من از تابع in_array و search_array استفاده کردم منتها هیچ چیزی رو اصلا ذخیره نمی کرد. انگار که همه ی مقادیر آرایه A در آرایه B موجوده. در حالی که اگه دقت کرده باشید در مثال بالا دو مقدار Ali و Mohammad که در آرایه A وجود دارند در آرایه B نیستن. که در پایان می خواستم این دو مقدار یعنی Ali و Mohammad در آرایه سوم ذخیره بشن.

بنابراین از شما عزیزان خواهشمندم منو در این زمینه راهنمایی کنید.
با تقدیم احترام.
صداقت.

charcharkh
یک شنبه 06 آبان 1397, 16:03 عصر
سلام array_diff() بزن

منبع :

https://www.w3schools.com/php/func_array_diff.asp

charcharkh
یک شنبه 06 آبان 1397, 16:08 عصر
اگر میخواهی مشترکها رو بگیری با array_intersect()

https://www.w3schools.com/php/func_array_intersect.asp

Ali_Sedaghat
یک شنبه 06 آبان 1397, 21:48 عصر
از پاسخ هایی که دادید سپاس گزارم.
من از توابع بالا استفاده کردم. منتها اصلا جواب نمیده.
امکانش هست زحمت کدش رو برام بکشید.
من فایل ضمیمه رو براتون ارسال میکنم.
احتمال میدم مقادیر موجود در آرایه شبیه هم نباشن.

قراره کل مقادیر موجود در فایل csv با این آرایه که در زیر کدش رو قرار میدم مقایسه بشه و هر مقداری که در این دو آرایه با هم متفاوت هستن رو در بیاره و در آرایه ی سوم ذخیره کنه.
ناگفته نمونه که فایل csv مورد نظر به صورت فایل فشرده در ضمیمه ی این پست قرار دادم.



$Array_A = array["Ali","Ahmad","Hosein","Mohammad"]
$Array_B = file("Data.csv");

$Result=array_diff($Array_A, $Array_B);
print_r(count($Result));


با تقدیم احترام.
صداقت

Ali_Sedaghat
دوشنبه 07 آبان 1397, 00:53 صبح
با سلام خدمت تمامی دوستان
مشکل رو حل کردم اما یه مشکل دیگه دارم. در پست اولی که دادم آرایه اول ما 5 تا عنصر داره و آرایه ی دوم هم 3 تا عنصر.
با استفاده از تابع array_diff تونستم مقادیری که بین دو آرایه مشترک نیستن رو در داخل آرایه ی سوم ذخیره کنم. که بالطبع 2 تا عنصر باقی می مونه که در آرایه ی اول وجود داره اما در آرایه ی دوم وجود نداره.
وقتی که از تابع count استفاده می کنم میزنه آرایه ی جدید 2 تا عنصر داره که درسته.
اما وقتی که از حلقه for استفاده می کنم باز هم مشکل دارم.
شکل آرایه ای که به من میده اینه:


Array ( [0] => Ali [4] => Mohammad [47])


من برای نمایش محتویات این آرایه از حلقه for استفاده می کنم ولی فقط یک عنصر رو که همون اولی هست رو نمایش میده.
فرض کنید که آرایه ی سوم به نام $Array_C ذخیره ش


for ($i=0; $i<count($Array_C); $i++) {
echo "$Array_C[$i] ."<br>";
}

وقتی این حلقه اجرا میشه فقط عنصر اول که Ali هست نمایش داده میشه و عنصر دوم که محمد هست نمایش داده نمیشه.
حدس من بر این هست که حلقه for روی اندیس عناصر حساس باشه.
من چه طور می تونم این اندیس ها رو نادیده بگیرم.
لطفا راهنمایی کنید.
با تشکر.

Ali_Sedaghat
دوشنبه 07 آبان 1397, 01:04 صبح
مشکلم با تابع foreach حل شد
باز هم از راهنمایی هاتون سپاس گزارم

charcharkh
دوشنبه 07 آبان 1397, 10:56 صبح
توی همون for هم میتونستی با حلش کنی که البته شخصا foreach رو پیشنهاد میدم بهر حال اگر for رو اینجوری بزنی درست میشه


for ($i=0; $i<=count($Array_C); $i++)