PDA

View Full Version : استخراج اطلاعات در فایل json



kiapmc
یک شنبه 12 فروردین 1403, 09:58 صبح
سلام دوستان یک مشکلی داشتم گر ممکن هست راهنمائی کنید

یک فایل داریم با پسنود json با اطلاعات زیر



{
"7160": "bb",
"2440": aa,
"0481": aa,
"6986": qq,
"1086": qq,
"1946": bb,
"3976": aa
}

اگر بخواهم در این فایل کل aa ها رو در بیارم چی کار کنم و همه را یکجا زیر هم چاپ کنم به شکل ذیل


2440
0481
3976

mazoolagh
یک شنبه 12 فروردین 1403, 17:15 عصر
سلام و نوروز شما پیروز

مشخص نکردین که در کدوم بخش از کار مشکل دارین:
- خوندن فایل json
- دیکد کردنش
- یا پردازش

پس فرض رو بر این میذارم که همه اش هست.
البته فرمت این دیتا که پیوست کردین نادرست هست و همه مقادیر string باید درون کوتیشن " باشن.

- خوندن فایل json:
با فرض این که اسم فایل شما x.json و در کنار فایل php شما باشه

$JSON = file_get_contents('x.json');

- برای دیکد کردن استرینگ json و ریختن دیتا در یک array :

$Data = json_decode($JSON , true);

- حالا در یک حلقه برای هر آیتم مقدار دوم (value$) رو چک میکنین، و اگر برابر aa بود مقدار اول (key$) رو به خروجی میفرستین:

foreach ($Data as $key => $value) {
if ($value === "aa") {
print ("$key <br>");
}
};

این که اسم متغییرها رو key$ و value$ انتخاب کردیم فقط از بابت رسوندن مفهوم هست و میتونین هر اسمی (که مجاز باشه) انتخاب کنین.

mazoolagh
یک شنبه 12 فروردین 1403, 17:45 عصر
یک راه دیگه این هست که اول خود Data$ رو بر اساس مقادیر مورد نظر فیلتر کنین و در یک آرایه دیگه (اینجا AA$) بریزین:

$AA = array_filter($Data, function($item) {
return ($item === "aa");
});


و بعد کلیدهای اون رو در یک آرایه دیگه (اینجا KEYS$) بریزین،
و اون رو چاپ کنین:

$KEYS = array_keys($AA);
foreach ($KEYS as $k) {
print ("$k <br>");
};

=====
البته من php کار نمیکنم و روی سیستم هم ندارم و دانش من در این زمینه زنگ زده است،
شاید راه های تمیزتر و بهتری هم باشه.
=====
در دستورهای print یک تگ br هم هست که ادیتور انجمن اون رو نشون نمیده!

kiapmc
دوشنبه 13 فروردین 1403, 19:32 عصر
یک راه دیگه این هست که اول خود Data$ رو بر اساس مقادیر مورد نظر فیلتر کنین و در یک آرایه دیگه (اینجا AA$) بریزین:

$AA = array_filter($Data, function($item) {
return ($item === "aa");
});


و بعد کلیدهای اون رو در یک آرایه دیگه (اینجا KEYS$) بریزین،
و اون رو چاپ کنین:

$KEYS = array_keys($AA);
foreach ($KEYS as $k) {
print ("$k <br>");
};

=====
البته من php کار نمیکنم و روی سیستم هم ندارم و دانش من در این زمینه زنگ زده است،
شاید راه های تمیزتر و بهتری هم باشه.
=====
در دستورهای print یک تگ br هم هست که ادیتور انجمن اون رو نشون نمیده!

واقعا ممنون دستتون درد نکنه