View Full Version : شمارش تعداد value خاص در آرایه دو بعدی
Salazar.mi
یک شنبه 05 آبان 1398, 11:23 صبح
سلام
ممنون میشم کمکم کنید
میخوام مثلا اینجا بگه تعداد خانه هایی که مقدار 2 دارند چندتااست
<?php
$a=array(
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
);
?>
Salazar.mi
یک شنبه 05 آبان 1398, 11:47 صبح
حقیقتا من دستوری که مستقیم این کار را انجام بده پیدا نکردم
اگر هست ممنون میشم دوستان بگن چجوری کار میکنه
اینو نوشتم
ولی به تعداد 2 ها میاد یک نشون میده چجوری بگم این یک ها را جمع کن تا بشه تعداد 2
<?php
$a=array(
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
);
for($row=0;$row<8;$row++){
for($col=0;$col<8;$col++)
{
if($a[$row][$col]===2)
{
$red=0;
$red++;
}
}
}
?>
Salazar.mi
یک شنبه 05 آبان 1398, 12:12 عصر
پیداش کردم
ولی لطفا اگر دستور سریعتر هم داره بگین لطفا
<?php
$a=array(
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(0,5,2,5,0,5,1,5,),
);
$red=0;
foreach($a as $item)
{
foreach($item as $b)
{
if($b===2)
{
$red++;
}
}
}
echo $red;
?>
ASHKANLAEI
یک شنبه 05 آبان 1398, 15:14 عصر
دربارۀ این عبارت چستجو کنید: PHPLinq
plague
یک شنبه 05 آبان 1398, 18:36 عصر
$red=0;
foreach($a as $item)
{
if( in_array(2 , $item))
{
$red++;
}
}
ASHKANLAEI
یک شنبه 05 آبان 1398, 18:42 عصر
$red=0;
foreach($a as $item)
{
if( in_array(2 , item)
{
$red++;
}
}
انگار این کد در صورت وجود 1 یا چند 2 در هر آیتم، فقط یکی به $red اضافه میکند. اما با حلقه، متغیر به تعداد 2 های موجود در هر آیتم، اضافه میشود.
plague
یک شنبه 05 آبان 1398, 19:19 عصر
بله من بد متوجه شدم
$red=0;
foreach($a as $item)
{
$freqs = array_count_values($item);
$red += $freqs['2'];
}
Salazar.mi
دوشنبه 06 آبان 1398, 00:14 صبح
بی نهایت ممنونم از هر دو دوست عزیز
تشکرات بسیار ویژه
ali_sed
دوشنبه 06 آبان 1398, 17:32 عصر
$a=array(
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(0,5,2,5,0,5,1,5,),
);
$red=0;
array_walk_recursive($a, function($v) use(&$red){ if($v==2) {++$red;}});
echo $red;
Salazar.mi
سه شنبه 07 آبان 1398, 16:19 عصر
$a=array(
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(0,5,2,5,0,5,1,5,),
);
$red=0;
array_walk_recursive($a, function($v) use(&$red){ if($v==2) {++$red;}});
echo $red;
بی نهایت ممنونم که جواب دادین
فقط
یه سوال اگر بخواهم اینجا بقیه عددها را هم حساب کنم
مثلا برای 0 و 1
چطوری باید بنویسم؟؟؟
Salazar.mi
سه شنبه 07 آبان 1398, 16:29 عصر
بله من بد متوجه شدم
$red=0;
foreach($a as $item)
{
$freqs = array_count_values($item);
$red += $freqs['2'];
}
ممنونم که جواب دادین من این کد را استفاده کردم
اگر تو هر ردیف یا همون آرایه های که تو آرایه اصلی قرار دارن عدد 2 نباشد ارور میده
$a=array(
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,2,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,5,5,0,5,1,5,),
array(0,0,5,5,1,5,1,5,),
مثل خط آخر
ASHKANLAEI
سه شنبه 07 آبان 1398, 17:20 عصر
بی نهایت ممنونم که جواب دادین
فقط
یه سوال اگر بخواهم اینجا بقیه عددها را هم حساب کنم
مثلا برای 0 و 1
چطوری باید بنویسم؟؟؟
در
array_walk_recursive($a, function($v) use(&$red){ if($v==2) {++$red;}});
قسمت (2==v$) باید 2 رو به عدد دلخواه تغییر بدین
ASHKANLAEI
سه شنبه 07 آبان 1398, 17:23 عصر
ممنونم که جواب دادین من این کد را استفاده کردم
اگر تو هر ردیف یا همون آرایه های که تو آرایه اصلی قرار دارن عدد 2 نباشد ارور میده
$a=array(
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,2,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,5,5,0,5,1,5,),
array(0,0,5,5,1,5,1,5,),
مثل خط آخر
$freqs['2'];رو به
$freqs['2']?$freqs['2']:0;تغییر بدین.
Salazar.mi
سه شنبه 07 آبان 1398, 17:39 عصر
در
array_walk_recursive($a, function($v) use(&$red){ if($v==2) {++$red;}});
قسمت (2==v$) باید 2 رو به عدد دلخواه تغییر بدین
متوجه شدم
array_walk_recursive اینو تو گوگل سرچ هم کردم
فکر کردم شاید بشه با یه بار عنوان کردن array_walk_recursive همه عددامو بشمارم
ممنون که جواب دادین
$a=array(
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,1,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(2,5,2,5,0,5,1,5,),
array(0,5,0,5,0,5,1,5,),
array(0,5,0,5,0,5,1,5,),
);
$red=0;
array_walk_recursive($a, function($v) use(&$red){ if($v==2) {++$red;}});
echo $red;
echo '<br>';
$blue=0;
array_walk_recursive($a, function($v) use(&$blue){ if($v==1) {++$blue;}});
echo $blue;
ali_sed
سه شنبه 07 آبان 1398, 23:13 عصر
متوجه شدم
array_walk_recursive اینو تو گوگل سرچ هم کردم
فکر کردم شاید بشه با یه بار عنوان کردن array_walk_recursive همه عددامو بشمارم
ممنون که جواب دادین
اینجوری میتوانید با یک بار هر دو را بشمارید:
$red = $blue = 0;
array_walk_recursive($a, function($v) use(&$red, &$blue){ if($v==1) {++$blue;}elseif($v==2) {++$red;}});
echo $red, ' ', $blue;
Salazar.mi
چهارشنبه 08 آبان 1398, 16:32 عصر
اینجوری میتوانید با یک بار هر دو را بشمارید:
$red = $blue = 0;
array_walk_recursive($a, function($v) use(&$red, &$blue){ if($v==1) {++$blue;}elseif($v==2) {++$red;}});
echo $red, ' ', $blue;
خیلی ممنونم که جواب دادین تشکر
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.