2016-01-20 61 views
0

我想计算此数组中具有字符串中最后一个字符之前的字符t的所有值(城市的名称)。在具有特殊字符的数组中计数值

ARRAY

$cities_array = array(
"city1" => "Paris_t1", 
"city2" => "Madrid_t1", 
"city3" => "Amsterdam_t1", 
"city4" => "London_i1", 
"city5" => "Miami_i1", 
"city6" => "Berlin_i1", 
"city7" => "Brussels_i1", 
"city8" => "Toronto_i1", 
); 

结果应该是:(Paris_t1 - Madrid_t1 - Amsterdam_t1)

我相信我有结合:

array_count_values($cities_array) 

substr($value, -2, 1) == "t" 

我都试过了,但我得到的唯一错误。

+1

什么阻止你尝试? –

+0

笑,做一些编码,不预测的事情:),我们会帮你,如果你遇到任何问题,当你实施解决方案 –

+0

我什么都试过,但我得到每次错误。 –

回答

2

该W倒数第二个字符搜索生病给你你想要的东西。

 $cities_array = array(
       "city1" => "Paris_t1", 
       "city2" => "Madrid_t1", 
       "city3" => "Amsterdam_t1", 
       "city4" => "London_i1", 
       "city5" => "Miami_i1", 
       "city6" => "Berlin_i1", 
       "city7" => "Brussels_i1", 
       "city8" => "Toronto_i1", 
       ); 
$count = 0; 
$city_text = ''; 
foreach($cities_array as $city){ 
    if(substr($city, -2, 1) == "t"){ 
     $count++; 
     $city_text .= $city . '-'; 
    } 
} 

echo $count. "(".rtrim($city_text,'-').")"; 
+0

非常感谢你。我今天学了些新东西): –

0

尝试以下溶液:

$cities_array = array(
    "city1" => "Paris_t1", 
    "city2" => "Madrid_t1", 
    "city3" => "Amsterdam_t1", 
    "city4" => "London_i1", 
    "city5" => "Miami_i1", 
    "city6" => "Berlin_i1", 
    "city7" => "Brussels_i1", 
    "city8" => "Toronto_i1", 
); 

$filtered_array = array_filter($cities_array, function($val){ 
    return (strpos($val, 't', (strlen($val)-2)) !== false); 
}); 

print_r($filtered_array); 

输出: - (可以由爆阵列 - 以获得所需结果)在strpos第三参数

Array 
(
    [city1] => Paris_t1 
    [city2] => Madrid_t1 
    [city3] => Amsterdam_t1 
) 

在上述溶液strlen($val)-2)即位置将从的$val