PDA

View Full Version : سئوال : نمایش عناصر تکراری ارایه در php



blognevis
چهارشنبه 25 اردیبهشت 1392, 10:54 صبح
سلام به همه دوستان

در صورت امکان اگر تایع یا دستوری است که بتوان عناصر تکراری ارایه را همراه با تعداد تکرار عنصر و اندیس را برگردونه و چاپ کنه راهنمایی کنید

مثلا میخوام این ارایه که بصورت رندوم پر شده را بررسی کنه و نتیجه را ارائه بدهد


while ($i < 20) {
$nums[] = mt_rand(0, 100);
$i++;
}

dousti_design
چهارشنبه 25 اردیبهشت 1392, 11:24 صبح
$arr = array(1=>'salam',2=>'salam',3 =>'salam' ,4=>'hello', 5=>'hello');
$duplicates = array_diff_assoc($arr, array_unique($arr));
$count = array();
foreach($duplicates as $value)
{
if($count[$value] == 0)
$count[$value]++;
$count[$value]++;
}
print_r($count);

blognevis
چهارشنبه 25 اردیبهشت 1392, 12:24 عصر
سلام مجدد

من این دستور را اجرا کردم . درست کار میکنه ولی میخوام علاوه بر نمایش عنر های تکرای تعداد تکرار هم مشخص کنه مثلا بگه عدد 22 در ارایه 3 بار نمایش داده شده در حال حاظر

while ($i < 20) {
$nums[] = mt_rand(0, 100);
$i++;
}
var_dump($nums);

print"<hr>";

$uniques = array_unique($nums);
$dups = array_diff_assoc($nums, $uniques);
print_r($dups);

blognevis
چهارشنبه 25 اردیبهشت 1392, 12:37 عصر
دوستان راه بهتری هم سراغ دارند؟

dousti_design
چهارشنبه 25 اردیبهشت 1392, 13:05 عصر
دوست عزیز این کد هم همین کار رو انجام میده. خروجیش اینجوری میشه:


Array ( [salam] => 3 [hello] => 2 )

سلام 3بار و hello 2بار تکرار شدن

blognevis
چهارشنبه 25 اردیبهشت 1392, 13:24 عصر
دوست عزیز این کد هم همین کار رو انجام میده. خروجیش اینجوری میشه:


Array ( [salam] => 3 [hello] => 2 )

سلام 3بار و hello 2بار تکرار شدن

سلام

ممنون . حق با شما است . من تازه شروع کردم . علم کافی ندارم و عذر خواهی میکنم .

ایا امکان داره این چند خط را هم خلاصه تر کرد ؟

xcodex
چهارشنبه 25 اردیبهشت 1392, 13:28 عصر
دوست عزیز راه بهتری هم هست استفاده از تابع array_count_values به صورت زیر :


print_r(array_count_values($nums));

تعداد تکرار هر ایندکس رو مشخص میکنه

موفق باشید

blognevis
چهارشنبه 25 اردیبهشت 1392, 13:33 عصر
دوست عزیز راه بهتری هم هست استفاده از تابع array_count_values به صورت زیر :


print_r(array_count_values($nums));

تعداد تکرار هر ایندکس رو مشخص میکنه


موفق باشید
تشکر دوست عزیز

فقط این تابع غیر تکراری ها را هم نمایش میدهد

xcodex
چهارشنبه 25 اردیبهشت 1392, 13:39 عصر
بله میتونید چک کنید کدوم مقدار بزرگتر از 1 هست که فقط اونو نمایش بده . به این صورت :



$iterate=array_count_values($nums);
$result=array();
foreach($iterate as $key=>$value)
{
if($value>1)
{$result[$key]=$value;}
}

print_r($result);

blognevis
چهارشنبه 25 اردیبهشت 1392, 14:42 عصر
تشکر از هر دو دوست عزیز