【问题标题】:PHP - Dealing with duplicated array keys (internal pointers)PHP - 处理重复的数组键(内部指针)
【发布时间】:2017-08-12 23:05:55
【问题描述】:

我有以下几行代码从我的数据库中获取一些数据。我需要引用数据的一些特定内容,但我遇到了重复数组键的问题。由于项目的复杂性,我不想使用 SQL 语句对数据进行排序。

在检查数组的指针后,生成了以下内容。 ( [0] => 0 ) 数组 ( [0] => 0 ) 数组 ( [0] => 0 ) 数组 ( [0] => 0 ) 数组 ( [0] => 0 ) 数组 ( [0] = > 0 ) 数组 ( [0] => 0 ) 数组 ( [0] => 0 )

打印数组的样本: ( [0] => 3371450.18 ) 数组 ( [0] => 54459051.95 ) 数组 ( [0] => 210382.52 ) 数组 ( [0] => 6860440.01 ) 数组 ( [0] => 13131358.12 )

由于所有的数组键都是重复的,一些 PHP 数组函数(如 (array_sum, array_max) 等)确实在数组上工作,而且它变得非常令人沮丧。

我想知道这是否是因为 while 循环。 while 循环中的数组指针是否总是重复的。 `

if(isset($_SESSION['sess']) && !empty(isset($_SESSION['sess']))){

echo "Session id is ".$_SESSION['sess']." exist";
$currentSession = $_SESSION['sess'];
$sql = "SELECT * FROM `loanbook` WHERE LoanBookSessionId='$currentSession'";
$result = mysqli_query($dbs,$sql);
$teamselection = "SELECT * FROM `Teams`";
$teamresult = mysqli_query($dbs,$teamselection);
while($row = mysqli_fetch_array($result)){ 

 ?>
 <?php
 $Sn[] = $row['Id'];
 $Team = $row['Team'];
 $CounterClass = $row['CounterPartyClassification'];
 $GrossL = $row['GrossLoan'];
 $CollType = $row['CollateralType'];

 print_r(array_keys(array($GrossL)));
 print_r((array($GrossL)));
 }

 ?>`

【问题讨论】:

  • 您的问题中似乎缺少代码示例,请您重新添加。
  • 看起来您没有包含数据的数组,而是一个包含数据的 1 个元素的数组的数组,因此所有这些内部数组都具有包含信息的索引 0。必须分析代码以了解为什么会发生这种情况,这可能与使用一些抽象数据的类有关,例如 SimpleXMLElement()DOMDocument() 或等效的。
  • 当我从SimpleXMLElement() 提取数据时,我强制进行类型转换来解决这个问题,例如$info = (double)$data-&gt;result,而不是简单的$info = $data-&gt;result

标签: php arrays pointers key


【解决方案1】:

看起来好像你有一个二维数组,其中每个内部数组都包含一个代表浮点数的字符串。

将每个内部数组映射到解析的浮点值应该提供您需要的数据结构。

<?php

$x = [
    ["1.43434"],
    ["1.43434"],
];

echo json_encode($x) . "\n";

echo json_encode(array_map(function($t) {
    return floatval($t[0]);
}, $x));

输出

▶ php test.php
[["1.43434"],["1.43434"]]
[1.43434,1.43434]

【讨论】:

  • 我刚试过。问题依然存在。所有的数组键仍然是 0。
  • ["3371450.18"] ["54459051.95"] ["210382.52"] ["6860440.01"] ["13131358.12"] ["1137406895"] ["285531147.5"] ["2719631"] ["4" 21699617.25"] ["50705852.68"] ["25768709.1"] ["25655094.18"] ["33686018.46"] ["416219707.6"] ["41835640.04"] ["709347.92"]6"6] ["12696678.9.9"] 2772667.97"] ["20439.25"] ["10429746.8"] ["1487394.99"] ["1499122.27"] ["6789633.61"] ["1419328.15"] ["10328881.42"] ["32304411.5901"] ["32304411.5901"]跨度>
猜你喜欢
  • 2017-12-09
  • 1970-01-01
  • 2015-03-19
  • 2011-11-11
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多