尝试计算多个数组时无法计算第一个数组值
unable to count past the first arrays values when trying to count multiple arrays
以下发生在 WordPress 中..
// get the current page author
$curauth = (isset($_GET['author_name'])) ? get_user_by('slug',
$author_name) : get_userdata(intval($author));
// get the current page authors id (in this case its 2)
$author_id = $curauth->ID;
// set the $args to get the value of the users meta_key named 'followers'
$args = array(
'meta_key' => 'followers',
);
// setup the get_users() query to use the $args
$users = get_users($args);
// setup a foreach loop to loop through all the users we just queried getting the value of each users 'followers' field
foreach ($users as $user) {
// $user->folllowers returns:
// 2
// 1,3,5
// 3,4,5
// 3,5,1,4
// 3,4,5,1
// 1,2
// which is a series of comma separated strings.
// so then i turn each string into an array:
$array = array($user->followers);
// go through each array and count the items that contain the authors id
for($i = 0; $i < count($array); $i++) {
$counts = array_count_values($array);
echo $counts[$author_id];
}
}
结果是我得到的值是“1”,但它应该是“2”,因为本例中的 author_id 是 2,并且有 2 个字符串包含 2。
我觉得它只检查数组系列中第一个数组中的 author_id。
你能帮我弄清楚我做错了什么吗?
更改此行
$array = array($user->followers);
到
$array = explode(",", $user->followers);
因为假设你有 $followers ="3,4,5,1";
那么:
$array = array($followers);
print_r($array);
Output:
Array
(
[0] => 3,4,5,1
)
$array = explode(",", $followers);
print_r($array);
Output:
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 1
)
以下发生在 WordPress 中..
// get the current page author
$curauth = (isset($_GET['author_name'])) ? get_user_by('slug',
$author_name) : get_userdata(intval($author));
// get the current page authors id (in this case its 2)
$author_id = $curauth->ID;
// set the $args to get the value of the users meta_key named 'followers'
$args = array(
'meta_key' => 'followers',
);
// setup the get_users() query to use the $args
$users = get_users($args);
// setup a foreach loop to loop through all the users we just queried getting the value of each users 'followers' field
foreach ($users as $user) {
// $user->folllowers returns:
// 2
// 1,3,5
// 3,4,5
// 3,5,1,4
// 3,4,5,1
// 1,2
// which is a series of comma separated strings.
// so then i turn each string into an array:
$array = array($user->followers);
// go through each array and count the items that contain the authors id
for($i = 0; $i < count($array); $i++) {
$counts = array_count_values($array);
echo $counts[$author_id];
}
}
结果是我得到的值是“1”,但它应该是“2”,因为本例中的 author_id 是 2,并且有 2 个字符串包含 2。
我觉得它只检查数组系列中第一个数组中的 author_id。
你能帮我弄清楚我做错了什么吗?
更改此行
$array = array($user->followers);
到
$array = explode(",", $user->followers);
因为假设你有 $followers ="3,4,5,1";
那么:
$array = array($followers);
print_r($array);
Output:
Array
(
[0] => 3,4,5,1
)
$array = explode(",", $followers);
print_r($array);
Output:
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 1
)