这是一个数组,我需要从中排序部门名称,全名和薪水,其薪水在10000rs以上。 数组是:
Array
(
[PHP] => Array
(
[0] => Array
(
[name] => Jay
[salary] => 8000
)
[1] => Array
(
[name] => Raj
[salary] => 15000
)
[2] => Array
(
[name] => Mihir
[salary] => 12000
)
)
[Flex] => Array
(
[0] => Array
(
[name] => Vijay
[salary] => 14000
)
)
[System] => Array
(
[0] => Array
(
[name] => Kishan
[salary] => 5000
)
)
)
我在foreach循环中完全感到困惑,不知道如何从数组中调用每个值。
我的代码仅允许显示姓名。
我能知道在PHP中打印和使用多维数组的最佳方法是什么吗?
我的代码:
foreach($newArray as $x=>$x_value){
foreach ($x_value as $y=> $y_value){
if($y_value['salary']>10000)
echo $y_value['name']." has ". $y_value['salary']. ", ";
}
}
答案 0 :(得分:1)
使用以下经过测试和正常工作的
$filterArray = array();
$i = 0;
foreach($salary as $dept => $employee){
foreach($employee as $index => $data){
if($data['salary'] > 10000){
$filterArray[$i]['deprtment'] = $dept;
$filterArray[$i]['name'] = $data['name'];
$filterArray[$i]['salary'] = $data['salary'];
}
$i++;
}
}
结果:-
Array
(
[1] => Array
(
[deprtment] => PHP
[name] => Raj
[salary] => 15000
)
[2] => Array
(
[deprtment] => PHP
[name] => Mihir
[salary] => 12000
)
[3] => Array
(
[deprtment] => Flex
[name] => Vijay
[salary] => 14000
)
)
答案 1 :(得分:0)
这是一个遍历数组的简单解决方案。
foreach ($bigArray as $department => $employees) {
foreach ($employees as $employee) {
if ($employee["salary"] > 10000) {
echo "Department: " . $department;
echo "Employee: " . $employee;
echo "Salary: " . $salary;
} else {
echo $person . " has no money.";
}
}
}
这将输出您在示例中尝试打印的内容。
第一位员工的输出:
Department: <department name>
Employee: Raj
Salary: 15000
将来,您应该在示例数组中包含部门名称,因为您的示例并没有要打印的所有信息;无法打印不存在的内容。
答案 2 :(得分:0)
您的输入是嵌套数组。因此,您必须使用foreach + for循环:
$final_array = array();
foreach($newArray as $x=>$x_value)
{
foreach ($i=0;$i<count($x_value);$i++)
{
if($x_value[$i]['salary']>10000)
{
if(isset($final_array[$x]))
{
array_push($final_array[$x],array("name"=>$x_value[$i]['name'],"salary"=>$x_value[$i]['salary']));
}
else
{
$final_array[$x] = array();
array_push($final_array[$x],array("name"=>$x_value[$i]['name'],"salary"=>$x_value[$i]['salary']));
}
}
}
}
$ final_array打印详细的名称和薪水,最多10000 输出:
Array
(
[PHP] => Array
(
[0]=> Array
(
[name] => Raj
[salary] => 15000
)
[1]=> Array
(
[name] => Mihir
[salary] => 12000
)
)
[Flex] => Array
(
[0]=> Array
(
[name] => Vijay
[salary] => 14000)
)
)
)
答案 3 :(得分:0)
我不知道我是否正确理解了您,但是如果您需要从子数组(PHP,Flex,System等)中筛选出所有人员,然后按其排序名称或薪水,您可以通过以下方式或类似方式进行操作:
$array = [
'PHP' => [
[
'name' => 'Jay',
'salary' => 8000
],
[
'name' => 'Raj',
'salary' => 15000
],
[
'name' => 'Mihir',
'salary' => 12000
]
],
'Flex' => [
[
'name' => 'Vijay',
'salary' => 14000
]
],
'System' => [
[
'name' => 'Kishan',
'salary' => 5000
]
]
];
$array_people = [];
$array_sorted = [];
$sort_by = 'name'; // Array key name
$sort_desc = false;
$min_salary = 10000;
foreach ($array as $type => $people)
{
foreach ($people as $info)
{
if ($info['salary'] >= $min_salary) {
$array_sorted[] = $info[$sort_by];
$array_people[] = $info;
}
}
}
if ($sort_desc) {
// Sort descending
arsort($array_sorted);
} else {
// Sort ascending
asort($array_sorted);
}
$array_final = [];
foreach (array_keys($array_sorted) as $index)
{
$array_final[] = $array_people[$index];
}
print_r($array_final);
输出:
Array
(
[0] => Array
(
[name] => Mihir
[salary] => 12000
)
[1] => Array
(
[name] => Raj
[salary] => 15000
)
[2] => Array
(
[name] => Vijay
[salary] => 14000
)
)
您需要做的第一件事是以某种方式处理主数组,该方法允许您仅保留所需的项目-这些项目需要存储在不同的(空)数组中(在这种情况下,{ {1}}。
在检测所需项目时,必须找出所有要排序的值-这可以同时完成。只是要创建一个新数组,该数组将仅包含您要排序的值(在这种情况下为$array_people
)。
然后是简单的部分。接下来要做的是对数组进行排序。有一个bunch of functions,可以为您提供帮助。
我使用的功能($array_sorted
和asort
)保留了项目的原始键,因此您可以通过键对包含所有人员的数组进行排序>排序数组(请参见上面的代码)。
仅此而已,现在您有了一个由经过筛选和排序的人员组成的数组:) ...希望能对您有所帮助。
答案 4 :(得分:0)
好吧,在阅读了很多解决方案之后,我个人认为其中一些对于新手来说是完全令人困惑的,因此这是我实际实现的解决方案,它完全简单易懂,可以理解多维数组的流程。
foreach($newArray as $x=>$x_value){
foreach ($x_value as $y=> $y_value){
if($y_value['salary']>10000){
echo "<tr>";
echo "<td>"; echo $y_value['name']; echo "</td>";
echo "<td>"; echo $x; echo "</td>";
echo "<td>"; echo $y_value['salary']; echo "</td>";
echo "</tr>";
}
}
}
输出将类似于(如果您使用table)