PHP数组值为变量

Mr_*_*mas 2 php mysql arrays count

我正在使用以下代码来计算locations表中的数量:

$result = mysqli_query($conn,"SELECT location FROM table ORDER BY location");

$aloc_list = array();
while ($row = mysqli_fetch_array($result))
        {$aloc_list[] = $row['location'];
        }

print_r(array_count_values($aloc_list));
Run Code Online (Sandbox Code Playgroud)

这给了我以下数组:

Array
(
    [CANADA] => 106
    [USA] => 547
    [MEXICO] => 93
    [GREAT_BRITAIN] => 111
    [EASTERN_EUROPE] => 227
    [RUSSIA] => 405
    [CHINA] => 341
    [INDIA] => 253
)
Run Code Online (Sandbox Code Playgroud)

我试图'提取'数组值并将它们放在一个变量中,但似乎没有任何效果:

$canada = $aloc_list[0];
$canada = $aloc_list['CANADA'];
$canada = $aloc_list[0]['CANADA'];
$canada = $aloc_list[0];
Run Code Online (Sandbox Code Playgroud)

我想最终得到一个名为$canada等于106的变量,一个名为$usa等于547 的变量,等等.

我该如何做到这一点?

Cid*_*Cid 5

如果您不想更改查询,可以存储结果array_count_values($aloc_list)并使用它来提取数据.您可以使用变量变量生成动态变量,但我不建议这样做.您可能希望在使用之前检查变量是否存在.(isset())

$aloc_list_count = array_count_values($aloc_list);
var_dump($aloc_list_count);
/*
Outputs
array (size=8)
    'CANADA' => int 106
    'USA' => int 547
    'MEXICO' => int 93
    'GREAT_BRITAIN' => int 111
    'EASTERN_EUROPE' => int 227
    'RUSSIA' => int 405
    'CHINA' => int 341
    'INDIA' => int 253
*/
foreach ($aloc_list_count AS $key => $value)
    ${strtolower($key)} = $value;
echo $canada; //106
echo $usa;    //547
echo $france; //Notice: Undefined variable: france in...
Run Code Online (Sandbox Code Playgroud)

或者您可以使用提取功能来实现这一目标

extract($aloc_list_count);
Run Code Online (Sandbox Code Playgroud)

  • 使用变量变量的好主意,但你应该对它应用`strtolower()`,OP表示他们希望变量是小写的. (2认同)