PDA

View Full Version : سوال: چطوری می تونم یه رشته رو گروه بندی کنم ؟



mamali-mohammad
دوشنبه 12 تیر 1391, 19:08 عصر
سلام
من یه رشته داریم :


$test="ali, hossein, ali, ali, milad, abbas, hossein,";
میخوام خروجی این باشه :

ali, hossein, milad, abbas,
حالا اگه تعدادش هم کنارش باشه که دیگه بهتره
مثلا :

ali(3), hossein(2), milad(1), abbas(1),

ممنون

chaown
دوشنبه 12 تیر 1391, 19:21 عصر
می تونی از تابع explode استفاده کنی
این تابع تویه رشته دنباله کاراکتر مورد نظرتون می گرده و قبل و بعدش رو تو متغیر های آرایه ای قرار می ده
فرض کنیم جدا کننده های نام ها در رشته شما کاراکتر اسپسپیس باشه

$ex=explode(" ",$test);
تو دستور بالا گفتم هرجا به کاراکتر اسپیس رسیدی قبلش و بعدش رو بریز تویه متغیر آرایه ای $ex
که نتیجه این میشه:

$ex[0]==ali, $ex[1]==hossein, $ex[2]==milad, $ex[3]==abbas,
حالا هرجا خواستی از milad استفاده کنی بنویس $ex[2]

colors
دوشنبه 12 تیر 1391, 19:38 عصر
درود


<?php
$test=" ali, hossein, ali, ali, milad, abbas, hossein, ";
$array = explode(',', $test);
$new_array = array();
foreach ($array as $key => $value) {
if(isset($new_array[$value])){
$new_array[$value] += 1;
}
else{
$new_array[$value] = 1;
}
}
foreach ($new_array as $names => $n) {
echo $names;
if($n > 1){
echo "($n)";
}
echo "<br />";
}
?>

pejman_view
دوشنبه 12 تیر 1391, 20:09 عصر
سلام

این کد منم یه امتحان بکن:

$test=" ali, hossein, ali, ali, milad, abbas, hossein,";
$names = explode(",", $test);
array_map("trim", $names);
$uniqe = array_unique($names);
$qnts = array_count_values($names);
foreach($uniqe as $val){
echo $val.'('.$qnts[$val].'),';
}