PDA

View Full Version : شمارش تعداد value خاص در آرایه دو بعدی



Salazar.mi
یک شنبه 05 آبان 1398, 10: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, 10: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, 11: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, 14:14 عصر
دربارۀ این عبارت چستجو کنید: PHPLinq

plague
یک شنبه 05 آبان 1398, 17:36 عصر
$red=0;
foreach($a as $item)
{
if( in_array(2 , $item))
{
$red++;
}
}

ASHKANLAEI
یک شنبه 05 آبان 1398, 17:42 عصر
$red=0;
foreach($a as $item)
{
if( in_array(2 , item)
{
$red++;
}
}

انگار این کد در صورت وجود 1 یا چند 2 در هر آیتم، فقط یکی به $red اضافه میکند. اما با حلقه، متغیر به تعداد 2 های موجود در هر آیتم، اضافه میشود.

plague
یک شنبه 05 آبان 1398, 18:19 عصر
بله من بد متوجه شدم



$red=0;
foreach($a as $item)
{
$freqs = array_count_values($item);
$red += $freqs['2'];
}

Salazar.mi
یک شنبه 05 آبان 1398, 23:14 عصر
بی نهایت ممنونم از هر دو دوست عزیز
تشکرات بسیار ویژه

ali_sed
دوشنبه 06 آبان 1398, 16: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, 15: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, 15: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, 16:20 عصر
بی نهایت ممنونم که جواب دادین
فقط
یه سوال اگر بخواهم اینجا بقیه عددها را هم حساب کنم
مثلا برای 0 و 1
چطوری باید بنویسم؟؟؟
در

array_walk_recursive($a, function($v) use(&$red){ if($v==2) {++$red;}});
قسمت (2==v$) باید 2 رو به عدد دلخواه تغییر بدین

ASHKANLAEI
سه شنبه 07 آبان 1398, 16: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, 16: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, 22: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, 15:32 عصر
اینجوری میتوانید با یک بار هر دو را بشمارید:


$red = $blue = 0;
array_walk_recursive($a, function($v) use(&$red, &$blue){ if($v==1) {++$blue;}elseif($v==2) {++$red;}});
echo $red, ' ', $blue;

خیلی ممنونم که جواب دادین تشکر