相关疑难解决方法(0)

PHP'foreach'如何实际工作?

让我通过说我知道它是什么foreach,做什么以及如何使用它来加上前缀.这个问题涉及它如何在发动机罩下工作,我不希望任何答案都是"这就是你如何循环阵列foreach".


很长一段时间,我认为这foreach与数组本身一起工作.然后我发现许多引用它的数据副本的事实,我已经假设这是故事的结尾.但是我最近讨论了这个问题,经过一些实验后发现这实际上并非100%正确.

让我说明我的意思.对于以下测试用例,我们将使用以下数组:

$array = array(1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)

测试案例1:

foreach ($array as $item) {
  echo "$item\n";
  $array[] = $item;
}
print_r($array);

/* Output in loop:    1 2 3 4 5
   $array after loop: 1 2 3 4 5 1 2 3 4 5 */
Run Code Online (Sandbox Code Playgroud)

这清楚地表明我们不直接使用源数组 - 否则循环将永远持续,因为我们在循环期间不断地将项目推送到数组.但只是为了确保这种情况:

测试案例2:

foreach ($array as $key => $item) {
  $array[$key + 1] = $item + 2;
  echo "$item\n";
}

print_r($array);

/* Output …
Run Code Online (Sandbox Code Playgroud)

php iteration foreach loops php-internals

1926
推荐指数
7
解决办法
39万
查看次数

获取(可能)关联数组中的第一个键?

确定可能关联数组中第一个键的最佳方法是什么?我第一次认为它只是预先处理数组,然后立即打破它,如下所示:

foreach ($an_array as $key => $val) break;
Run Code Online (Sandbox Code Playgroud)

因此,让$ key包含第一个键,但这似乎效率低下.有没有人有更好的解决方案?

php arrays

729
推荐指数
12
解决办法
55万
查看次数

获取数组的最后一个元素而不删除它的最佳方法是什么?

好,

我知道所有array_pop(),但删除了最后一个元素.获取数组的最后一个元素而不删除它的最佳方法是什么?

编辑:这是一个奖金:

$array = array('a' => 'a', 'b' => 'b', 'c' => 'c');
Run Code Online (Sandbox Code Playgroud)

甚至

$array = array('a', 'b', 'c', 'd');
unset($array[2]);
echo $array[sizeof($array) - 1]; // Output: PHP Notice:  Undefined offset:  2 in - on line 4
Run Code Online (Sandbox Code Playgroud)

php arrays

389
推荐指数
13
解决办法
32万
查看次数

一个值转换为字符串的数组?

可能重复:
获取数组的第一个元素将数组
转换为字符串php

我有这个数组:$ tab.

我执行print_r()它只是这样:

Array ( [0] => integration ).
Run Code Online (Sandbox Code Playgroud)

如何在不做的情况下获得价值整合$tab[0]

php

5
推荐指数
1
解决办法
1240
查看次数

如何获取另一个数组中的数组的值

我有这个:

Array
(
  [28] => Array
    (
        [name] => HTC Touch HD
    )
)
Run Code Online (Sandbox Code Playgroud)

主数组中只有一个数组,而我只有name的值.问题是我不知道索引(28).

php

2
推荐指数
1
解决办法
207
查看次数

PHP得到第一个数组元素

嘿所有我想从电影API获取数据.格式是这样的:

page => 1
results =>
   0 =>
    adult =>
    backdrop_path => /gM3KKixSicG.jpg
    id => 603
    original_title => The Matrix
    release_date => 1999-03-30
    poster_path => /gynBNzwyaioNkjKgN.jpg
    popularity => 10.55
    title => The Matrix
    vote_average => 9
    vote_count => 328
  1 =>
    adult =>
    backdrop_path => /o6XxGMvqKx0.jpg
    id => 605
    original_title => The Matrix Revolutions
    release_date => 2003-10-26
    poster_path => /sKogjhfs5q3aEG8.jpg
    popularity => 5.11
    title => The Matrix Revolutions
    vote_average => 7.5
    vote_count => 98
 etc etc....
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到第一个元素[0]的数据(如在backdrop_path,original_title等中)?我是PHP数组的新手:).

当然这是我用来输出数组数据的:

 print_r($theMovie)
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!

php arrays api element

2
推荐指数
1
解决办法
9215
查看次数

PHP-从数组中获取第一个和最后一个键和值

从给定的数组(例如$_SERVER:)中,我需要获取第一个和最后一个键和值。我试图使用 array_shift 来获取第一个值和键,但我得到的是值。

这是$_SERVER数组:

print_r($_SERVER, true))
Run Code Online (Sandbox Code Playgroud)

我尝试过:

echo array_shift($_SERVER);
Run Code Online (Sandbox Code Playgroud)

php arrays

2
推荐指数
1
解决办法
5103
查看次数

PHP 如何回显关联数组的某个位置?

我的数组如下所示:

Array
    ( [myarr] => Array (
                [504] => 2
                [508] => 25
        )
    ) 
Run Code Online (Sandbox Code Playgroud)

是否可以回显这个数组的某个位置?我试过了:

echo $_SESSION['myarr'][0][0];
Run Code Online (Sandbox Code Playgroud)

我似乎无法得到任何回应。

编辑:更具体地说..是否可以根据数字索引来回应它?

php arrays associative

1
推荐指数
1
解决办法
1046
查看次数

获取数组第一项的最快方法是什么?

可能重复:
获取数组的第一个元素

什么是在PHP中获取数组的第一项的最快和最简单的方法?我只需要保存在字符串中的数组的第一项,并且不能修改数组.

php arrays performance

1
推荐指数
1
解决办法
1063
查看次数

获得用户的角色 - Yii2

我正在为登录用户搜索用户角色,我没有得到如何打印用户角色名称.我试过这个:

$Role = Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId());
Run Code Online (Sandbox Code Playgroud)

什么时候,我做了print_r($Role); 我懂了 :

Array ( [superadmin] => yii\rbac\Role Object ( [type] => 1 [name] => superadmin [description] => Super admin can do any operation in the application [ruleName] => [data] => [createdAt] => [updatedAt] => ) )
Run Code Online (Sandbox Code Playgroud)

我希望获得特定的角色名称,但我无法访问

Array ( [superadmin] => yii\rbac\Role Object ........)
           ^ unable to access this name.
Run Code Online (Sandbox Code Playgroud)

打字时print_r($Role[0]->name);我得到的错误就像

PHP注意 - yii\base\ErrorException

未定义的偏移量:0

并且,如果我喜欢这种方式(意味着,手动传递$rolename给数组索引)它正在工作.

$roleName = 'superadmin';

print_r($Role[$roleName]->name);
Run Code Online (Sandbox Code Playgroud)

为什么这个要求来找我,因为对于登录用户它是好的.但是,如果我想知道其他用户角色名称,那么我需要在这里传递索引名称$Role[$roleName]->name

请帮我看看'superadmin'.我没有得到如何得到它的索引名称.

Array ( [superadmin] => yii\rbac\Role Object …
Run Code Online (Sandbox Code Playgroud)

php yii2 yii2-advanced-app yii2-basic-app yii2-user-roles

1
推荐指数
1
解决办法
4160
查看次数

PHP数组如果有超过X的值,则返回最后的Y值

我有关于PHP的非常简单的问题.(不要先-1.)

想象一下,我们有这个数组:

Array {
[1] => Hi
[3] => Hey
[5] => You
[9] => hello
[13] => yes
[66] => Test
[86] => Test2
[96] => Test3
}
Run Code Online (Sandbox Code Playgroud)

(它不是SORTed).

所以,我想要两件事:

  1. 首先,找出这个数组中有多少个值(在这个数组中,它是8);

  2. 第二,如果它有超过5个值,那么只返回5个第一个值(因为我说它没有按数组编号排序,所以,我只想返回5个第一个值)

我们怎样才能用PHP做到这一点?

((我很抱歉因为我是初学者,在其他问题中找不到解决方案))

php arrays

0
推荐指数
1
解决办法
845
查看次数

动态创建和访问数组

我正在尝试用字符串动态创建一个数组.这是我正在尝试使用的代码:

$users = get_users( $args_users );
$user_display = array(); 
$user_display_sorted = array();
foreach($users as $user){
    echo $user->ID;
    $first_name = get_user_meta($user->ID, 'first_name', true);
    $last_name = get_user_meta($user->ID, 'last_name', true);
    $name = $first_name.' '.$last_name;
    array_push($user_display, $user->ID);
    array_push($user_display, $name);
    $user_display_sorted = asort($user_display);
}
print_r($user_display);
Run Code Online (Sandbox Code Playgroud)

当我打印数组时,我得到以下内容:
Array ( [0] => 5 [1] => Test Person[2] => 6 [3] => Adam Person )

我希望输出是这样的:
Array ( [0] [ID] => 5 [name] => Test Person; [1] [ID] => 6 [name] => Adam Person)

所以我想在user_display_sorted数组上做一个foreach循环并访问这样的变量:

foreach($user_display_sorted as $user_display_sort){ …
Run Code Online (Sandbox Code Playgroud)

php arrays

0
推荐指数
1
解决办法
43
查看次数