Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查找具有最大或最小子数组元素值的数组元素_Php_Arrays - Fatal编程技术网

Php 查找具有最大或最小子数组元素值的数组元素

Php 查找具有最大或最小子数组元素值的数组元素,php,arrays,Php,Arrays,以下数组的元素1表示x值最大的元素,元素2表示x元素最小的元素 如果不使用PHP代码在每个数组上循环,如何确定具有最大和最小x的元素的索引 $array = [ ['x'=>5,'y'=>3], ['x'=>9,'y'=>3], ['x'=>3,'y'=>3], ['x'=>7,'y'=>3] ]; 提取x列并计算它: $x = array_column($array, 'x'); $min = min($x);

以下数组的元素1表示
x
值最大的元素,元素2表示
x
元素最小的元素

如果不使用PHP代码在每个数组上循环,如何确定具有最大和最小
x
的元素的索引

$array = [
    ['x'=>5,'y'=>3],
    ['x'=>9,'y'=>3],
    ['x'=>3,'y'=>3],
    ['x'=>7,'y'=>3]
];

提取
x
列并计算它:

$x = array_column($array, 'x');
$min = min($x);
$max = max($x);
或者,正如JustOnUnderMillions所指出的:

list($min, $max) = [min($x=array_column($array, 'x')), max($x)];
要获取包含该值的数组的索引,只需使用
array\u search()
。如果有多个相同的值,它将返回第一个键:

$x = array_column($array, 'x');
$min = array_search(min($x), $x, true);
$max = array_search(max($x), $x, true);

PHP>=5.5.0需要
array\u column()
或使用提取
x
列并计算:

$x = array_column($array, 'x');
$min = min($x);
$max = max($x);
或者,正如JustOnUnderMillions所指出的:

list($min, $max) = [min($x=array_column($array, 'x')), max($x)];
要获取包含该值的数组的索引,只需使用
array\u search()
。如果有多个相同的值,它将返回第一个键:

$x = array_column($array, 'x');
$min = array_search(min($x), $x, true);
$max = array_search(max($x), $x, true);

PHP>=5.5.0需要
array\u column()
或使用请使用
list()
最终获得一行代码;-)没有
array\u column()
的答案不是正确答案吗P您还可以包括一个简单的foreach循环,OP只需要迭代数组一次。实际上,我正在尝试获取元素的索引(即1表示最大值,2表示最小值),而不是值。@Rizier123当然,
array\u map
with
function($a)use(&$min,&max){}
也可以使用。也许这项任务有点容易@用户1032531 Opps,但没有人看到它像这样!为此,您需要另一个代码段。请使用
list()
最终获得一行代码;-)没有
array\u column()
的答案不是正确答案吗P您还可以包括一个简单的foreach循环,OP只需要迭代数组一次。实际上,我正在尝试获取元素的索引(即1表示最大值,2表示最小值),而不是值。@Rizier123当然,
array\u map
with
function($a)use(&$min,&max){}
也可以使用。也许这项任务有点容易@用户1032531 Opps,但没有人看到它像这样!为此,您需要另一个代码段。您必须循环每个元素,否则您如何知道是否有比您发现的更大的值?!仅仅因为您在代码中没有看到它,并不意味着
array\u column()
不会在整个数组中循环,因为它会循环。您可以使用一个简单的foreach循环,然后只在数组上循环一次,而不喜欢使用
array\u column()
两次。更确切地说,如果使用
array\u column()
您不仅需要在数组上循环一次才能得到列,还需要使用
min()
max()
,它还需要在整个阵列上循环。因此,您总共在数组上迭代了3次,只是因为您不想在代码中看到“循环”。您可以使用一个简单的foreach循环,并在一个循环中完成所有操作!通过使用限制:
不在每个
上循环-您的意思是:1)不要使用
foreach
循环语句2)使用一些不比较相邻条目值的指令?1) 使用“array_*”函数满足要求。2) 对于任何使用标准CPU和内存的计算机来说都是不可能的。为了说明这一点,所有传统的计算机都会对数据进行循环。@RyanVincent我应该说“不要使用PHP代码进行循环”。你必须循环每个元素,否则你怎么知道是否有比你发现的更大的值?!仅仅因为您在代码中没有看到它,并不意味着
array\u column()
不会在整个数组中循环,因为它会循环。您可以使用一个简单的foreach循环,然后只在数组上循环一次,而不喜欢使用
array\u column()
两次。更确切地说,如果使用
array\u column()
您不仅需要在数组上循环一次才能得到列,还需要使用
min()
max()
,它还需要在整个阵列上循环。因此,您总共在数组上迭代了3次,只是因为您不想在代码中看到“循环”。您可以使用一个简单的foreach循环,并在一个循环中完成所有操作!通过使用限制:
不在每个
上循环-您的意思是:1)不要使用
foreach
循环语句2)使用一些不比较相邻条目值的指令?1) 使用“array_*”函数满足要求。2) 对于任何使用标准CPU和内存的计算机来说都是不可能的。为了说明这一点,所有传统的计算机都会对数据进行循环。@RyanVincent我应该说“不要使用PHP代码进行循环”。