我array_column()在一个项目中使用过,上传后我发现只有PHP 5.5或更高版本支持这个功能,我认为我使用的托管不支持PHP 5.5或更高版本.
所以我想知道是否有任何替代方法来修复此错误?
这就是我array_count在我的项目中使用的方式:
array_count_values(array_column(json_decode(json_encode($queryResultArray), true), $idForBar));
Run Code Online (Sandbox Code Playgroud)
这在我的本地xampp和wampp中工作正常,但在服务器上它给出了问题.寻找任何替代功能或解决方案.
Pup*_*pil 78
array_column如果您的PHP版本不支持它,请添加您自己的函数:
<?php
if (! function_exists('array_column')) {
function array_column(array $input, $columnKey, $indexKey = null) {
$array = array();
foreach ($input as $value) {
if ( !array_key_exists($columnKey, $value)) {
trigger_error("Key \"$columnKey\" does not exist in array");
return false;
}
if (is_null($indexKey)) {
$array[] = $value[$columnKey];
}
else {
if ( !array_key_exists($indexKey, $value)) {
trigger_error("Key \"$indexKey\" does not exist in array");
return false;
}
if ( ! is_scalar($value[$indexKey])) {
trigger_error("Key \"$indexKey\" does not contain scalar value");
return false;
}
$array[$value[$indexKey]] = $value[$columnKey];
}
}
return $array;
}
}
Run Code Online (Sandbox Code Playgroud)
Leg*_*nar 20
array_map()如果array_column()因为PHP <5.5,你还可以使用函数:
例:
$a = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
)
);
array_column($a, 'last_name');
Run Code Online (Sandbox Code Playgroud)
变为:
array_map(function($element) {
return $element['last_name'];
}, $a);
Run Code Online (Sandbox Code Playgroud)
所以你的情况是代码:
array_count_values(
array_map(function($arr) use ($idForBar) {
return $arr[$idForBar];
}, $queryResultArray)
);
Run Code Online (Sandbox Code Playgroud)
以上是PHP 5.3.0及更高版本!
如果您有<PHP 5.3.0,就像编写PHP 5.2.17一样,只需使用简单的函数:
function get_field_data($array, $field, $idField = null) {
$_out = array();
if (is_array($array)) {
if ($idField == null) {
foreach ($array as $value) {
$_out[] = $value[$field];
}
}
else {
foreach ($array as $value) {
$_out[$value[$idField]] = $value[$field];
}
}
return $_out;
}
else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
$output = get_field_data($queryResultArray, $idForBar);
Run Code Online (Sandbox Code Playgroud)
您还可以使用array_column()的替代代码,只需粘贴到行下方并替换您的变量即可.
码:
array_map(function($element){return $element['last_name'];}, $a);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37778 次 |
| 最近记录: |