使用for each将字符串转换为整数不起作用


Using for each to convert String to integer is not working

我编写了一个函数,用于将String转换为integer(每个循环使用一个)。功能:

function prepare_client_data($data)
{  
foreach ($data as $index=>$value)
 {
    if($index<1) continue;
    $data[$index]['3']=(int)($value[$index]['3']); 
    $data[$index]['18']=(int)($value[$index]['18']); 
    $data[$index]['20']=(int)($value[$index]['20']); 
    $data[$index]['22']=(int)($value[$index]['22']);
    $data[$index]['25']=(int)($value[$index]['25']);
    $data[$index]['30']=(int)($value[$index]['30']);  
}

但此函数不起作用,无法将所有字符串转换为int 0
我想知道当我用foreach做同样的事情时,它会起作用:

$data['3']['20']=(int)($data['3']['20']);
echo $data['3']['20'].'test'; 

有人能帮我吗。我试着破解它。没有进展。

首先,您缺少一个大括号。这是您需要的解决方案

function prepare_client_data($data) {
    foreach ($data as $index => $value) {
        if ($index < 1)
            continue;
        //echo ($value['3']);
        $data[$index]['3'] = (int) $value['3'];
        $data[$index]['18'] = (int) ($value['18']);
        $data[$index]['20'] = (int) ($value['20']);
        $data[$index]['22'] = (int) ($value['22']);
        $data[$index]['25'] = (int) ($value['25']);
        $data[$index]['30'] = (int) ($value['30']);
    }
    return $data;
}
$data=prepare_client_data($data);

function prepare_client_data($data) {
    foreach ($data as $index => $value) {
        if ($index < 1)
            continue;
        $data[$index]['3'] = (int) ($data[$index]['3']);
        $data[$index]['18'] = (int) ($data[$index]['18']);
        $data[$index]['20'] = (int) ($data[$index]['20']);
        $data[$index]['22'] = (int) ($data[$index]['22']);
        $data[$index]['25'] = (int) ($data[$index]['25']);
        $data[$index]['30'] = (int) ($data[$index]['30']);
    }
}

只有当你有数值而不是字母时,它才会起作用