Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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,已编辑 我将此选择查询用于左联接: $updaterbk = "SELECT j1. * FROM jos_audittrail j1 LEFT OUTER JOIN jos_audittrail j2 ON ( j1.trackid != j2.trackid AND j1.field != j2.field AND j1.changedone < j2.changedone ) WHERE j1.operation = 'UPDATE' AND j2.id IS NULL "; 在这

已编辑

我将此选择查询用于左联接:

$updaterbk = "SELECT j1. *
FROM jos_audittrail j1
LEFT OUTER JOIN jos_audittrail j2 ON ( j1.trackid != j2.trackid
AND j1.field != j2.field
AND j1.changedone < j2.changedone )
WHERE j1.operation = 'UPDATE'
AND j2.id IS NULL
";
在这个数组中,我不希望任何值显示两次,也就是说,我只定义了第一次出现的值。
现在你可以看到索引“field”有重复的值,即“checked_out”和“checked_out_time”其他索引只有一次出现,现在我应该怎么做才能选择/获取重复值的第一次出现?

这似乎是数据库查询的结果,因此,我建议将查询更改为仅选择唯一的
字段

要获取唯一的
字段
值,可以尝试对该列进行分组:

SELECT j1.*
FROM jos_audittrail j1
  LEFT OUTER JOIN jos_audittrail j2 ON (
    j1.trackid != j2.trackid
    AND j1.field != j2.field
    AND j1.changedone < j2.changedone
  )
WHERE j1.operation = 'UPDATE'
  AND j2.id IS NULL
GROUP BY j1.field
选择j1*
来自jos_audittrail j1
左外连接jos_audittrail j2 ON(
j1.trackid!=j2.trackid
和j1.field!=j2.field
和j1.changedone
您可能需要将所有其他选定列添加到
分组依据
,即
分组依据j1.field、j1.id、j1.trackid,…


如果您能提供更多的上下文信息,将会有所帮助:您使用的是什么系统、您试图实现什么、预期的输出、正在执行的数据库查询等;以及:请从调试输出中删除整数键及其值(
[6]=>签出时间
),因为不会添加任何信息(
[field]=>签出时间相同,但有一个更有意义的键。

这似乎是数据库查询的结果,因此我建议将查询更改为仅选择唯一的
字段

要获取唯一的
字段
值,可以尝试对该列进行分组:

SELECT j1.*
FROM jos_audittrail j1
  LEFT OUTER JOIN jos_audittrail j2 ON (
    j1.trackid != j2.trackid
    AND j1.field != j2.field
    AND j1.changedone < j2.changedone
  )
WHERE j1.operation = 'UPDATE'
  AND j2.id IS NULL
GROUP BY j1.field
选择j1*
来自jos_audittrail j1
左外连接jos_audittrail j2 ON(
j1.trackid!=j2.trackid
和j1.field!=j2.field
和j1.changedone
您可能需要将所有其他选定列添加到
分组依据
,即
分组依据j1.field、j1.id、j1.trackid,…


如果您能提供更多的上下文信息,将会有所帮助:您使用的是什么系统、您试图实现什么、预期的输出、正在执行的数据库查询等;以及:请从调试输出中删除整数键及其值(
[6]=>签出时间
),因为不会添加任何信息(
[field]=>签出时间相同,但有一个更有意义的键。

您希望得到什么样的输出?您能否提供一个代码示例,说明您试图实现的目标

我唯一能提供给您的信息是,您应该使用以下功能:

foreach($thatArray as $index => $subArray)
 if(($key = array_search('checked_out', $subArray))!==false)
  return $key;

这就是我认为您想要的。

您希望得到什么样的输出?您能否提供一个代码示例,说明您试图实现的目标

我唯一能提供给您的信息是,您应该使用以下功能:

foreach($thatArray as $index => $subArray)
 if(($key = array_search('checked_out', $subArray))!==false)
  return $key;

这就是我想你想要的。

这很长,但不清楚。在本例中,您期望哪种输出?这很长,但不清楚。在本例中,您期望哪种输出?