让我通过说我知道它是什么foreach,做什么以及如何使用它来加上前缀.这个问题涉及它如何在发动机罩下工作,我不希望任何答案都是"这就是你如何循环阵列foreach".
很长一段时间,我认为这foreach与数组本身一起工作.然后我发现许多引用它的数据副本的事实,我已经假设这是故事的结尾.但是我最近讨论了这个问题,经过一些实验后发现这实际上并非100%正确.
让我说明我的意思.对于以下测试用例,我们将使用以下数组:
$array = array(1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)
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)
这清楚地表明我们不直接使用源数组 - 否则循环将永远持续,因为我们在循环期间不断地将项目推送到数组.但只是为了确保这种情况:
foreach ($array as $key => $item) {
$array[$key + 1] = $item + 2;
echo "$item\n";
}
print_r($array);
/* Output …Run Code Online (Sandbox Code Playgroud) 确定可能关联数组中第一个键的最佳方法是什么?我第一次认为它只是预先处理数组,然后立即打破它,如下所示:
foreach ($an_array as $key => $val) break;
Run Code Online (Sandbox Code Playgroud)
因此,让$ key包含第一个键,但这似乎效率低下.有没有人有更好的解决方案?
好,
我知道所有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
我有这个数组:$ tab.
我执行print_r()它只是这样:
Array ( [0] => integration ).
Run Code Online (Sandbox Code Playgroud)
如何在不做的情况下获得价值整合$tab[0]?
我有这个:
Array
(
[28] => Array
(
[name] => HTC Touch HD
)
)
Run Code Online (Sandbox Code Playgroud)
主数组中只有一个数组,而我只有name的值.问题是我不知道索引(28).
嘿所有我想从电影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)
任何帮助都会很棒!
从给定的数组(例如$_SERVER:)中,我需要获取第一个和最后一个键和值。我试图使用 array_shift 来获取第一个值和键,但我得到的是值。
这是$_SERVER数组:
print_r($_SERVER, true))
Run Code Online (Sandbox Code Playgroud)
我尝试过:
echo array_shift($_SERVER);
Run Code Online (Sandbox Code Playgroud) 我的数组如下所示:
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中获取数组的第一项的最快和最简单的方法?我只需要保存在字符串中的数组的第一项,并且不能修改数组.
我正在为登录用户搜索用户角色,我没有得到如何打印用户角色名称.我试过这个:
$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的非常简单的问题.(请不要先-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).
所以,我想要两件事:
首先,找出这个数组中有多少个值(在这个数组中,它是8);
第二,如果它有超过5个值,那么只返回5个第一个值(因为我说它没有按数组编号排序,所以,我只想返回5个第一个值)
我们怎样才能用PHP做到这一点?
((我很抱歉因为我是初学者,在其他问题中找不到解决方案))
我正在尝试用字符串动态创建一个数组.这是我正在尝试使用的代码:
$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 ×12
arrays ×8
api ×1
associative ×1
element ×1
foreach ×1
iteration ×1
loops ×1
performance ×1
yii2 ×1