在PHP中仅从Array获取数值

时间:2016-05-11 10:05:43

标签: php arrays

我有一个看起来像这样的数组:

Array ( 
[0] => Array ( [country_percentage] => 5 %North America ) 
[1] => Array ( [country_percentage] => 0 %Latin America )
)

我只想要来自上面数组的数值。我想要这样的最终数组

Array ( 
[0] => Array ( [country_percentage] => 5) 
[1] => Array ( [country_percentage] => 0)
)

我是如何使用PHP实现这一目标的?提前谢谢......

8 个答案:

答案 0 :(得分:2)

当数字位于第一个位置时,您可以像这样编译:

$newArray = [];

foreach($array => $value) {

   $newArray[] = (int)$value;

}

答案 1 :(得分:1)

试试这个:

$arr = array(array('country_percentage' => '5 %North America'),array("country_percentage"=>"0 %Latin America"));
$result = array();
foreach($arr as $array) {
  $int = filter_var($array['country_percentage'], FILTER_SANITIZE_NUMBER_INT);
  $result[] = array('country_percentage' => $int);
}

答案 2 :(得分:1)

您可以通过循环遍历数组来获取所有数字值。但是我不认为这是最有效和最好看的答案,我会发布它。

// Array to hold just the numbers
$newArray = array();

// Loop through array
foreach ($array as $key => $value) {
    // Check if the value is numeric
    if (is_numeric($value)) {
        $newArray[$key] = $value;
    }
}

我很想念你的问题。

$newArray = array();
foreach ($array as $key => $value) {
    foreach ($value as $subkey => $subvalue) {
        $subvalue = trim(current(explode('%', $subvalue)));
        $newArray[$key] = array($subkey => $subvalue);
    }
}

答案 3 :(得分:1)

如果您想要除数字值以外的所有值:

$array[] = array("country_percentage"=>"5 %North America");
$array[] = array("country_percentage"=>"3 %Latin America");
$newArray = [];
foreach ($array as $arr){
foreach($arr as $key1=>$arr1) { 
       $newArray[][$key1] = intval($arr1);
  }
}
echo "<pre>";
print_R($newArray);

答案 4 :(得分:1)

试试这个: -

$arr =[['country_percentage' => '5 %North America'],
       ['country_percentage' => '0 %Latin America']];

$res = [];
foreach ($arr as $key => $val) {
    $res[]['country_percentage'] = (int)$val['country_percentage'];
}
echo '<pre>'; print_r($res);

<强>输出: -

Array
(
    [0] => Array
        (
            [country_percentage] => 5
        )

    [1] => Array
        (
            [country_percentage] => 0
        )

)

答案 5 :(得分:1)

您可以使用array_walk_recursive取消循环,
传递回调的第一个参数作为参考来修改初始数组值 然后,只需应用filter_varintval,如前面提到的其他答案。

$array = [
    ["country_percentage" => "5 %North America"],
    ["country_percentage" => "0 %Latin America"]
];

array_walk_recursive($array, function(&$value,$key){
    $value = filter_var($value,FILTER_SANITIZE_NUMBER_INT);
    // or 
    $value = intval($value);
});

print_r($array);

将输出

Array
(
    [0] => Array
        (
            [country_percentage] => 5
        )

    [1] => Array
        (
            [country_percentage] => 0
        )

)

答案 6 :(得分:1)

我猜你可以循环二维数组并使用preg_replace,即:

for($i=0; $i < count($arrays); $i++){
    $arrays[$i]['country_percentage'] = preg_replace( '/[^\d]/', '', $arrays[$i]['country_percentage'] );
}

Ideone Demo

更新根据您的评论

for($i=0; $i < count($arrays); $i++){
    if( preg_match( '/North America/', $arrays[$i]['country_percentage'] )){
       echo preg_replace( '/[^\d]/', '', $arrays[$i]['country_percentage'] );
  }
}

答案 7 :(得分:0)

这是一种贫民窟的方法,因为我喜欢使用尽可能多的预制功能。但这应该适合你:D

$array = array('jack', 2, 5, 'gday!');
$new = array();
foreach ($array as $item) {
  // IF Is numeric (each item from the array) will insert into new array called $new.
  if (is_numeric($item)) { array_push($new, $item); } 
}
相关问题