gpt4 book ai didi

php - 数组中的值是字符串而不是整数

转载 作者:行者123 更新时间:2023-12-04 00:58:23 25 4
gpt4 key购买 nike

我有一个多维数组,我需要将其传递给 Google Charts。该脚本通过 Ajax 调用,运行 3 次,然后传回使用 json_encode 编码的数组。然后我需要将 header 添加到数组中,所以我使用了 array_unshift()

这是脚本

    $dataArray = array();

$i = 0;
foreach ($arrSiteValue as $key => $value) {
if($i == 3){
break;
}
$dataArray[$key] = $value;
$i ++;
}

array_unshift($dataArray, array("Terms","Visits"));

echo json_encode($php_array);

这是返回的内容:

Console Output

注意:在它说(未设置)和(未提供)的地方,它们是字符串的正确值,必须是这样。

键的值应该是一个整数,但它会作为字符串传回

我怎样才能得到它以便将值添加为整数?

这是一个虚拟数组(有效),用于显示数组应以何种格式输出:

    $php_array = array(
array('Terms', 'Visits'),
array('test', 90),
array('joke', 90),
array('funny', 11)
);

这就是这个虚拟数组输出的内容(这正是我所需要的): Console.Log output

*当我将行更改为包含 (int) 时,这里的一些用户推荐我得到以下结果:New Console.log

编辑

这些是从 Google Analytics 库获取数据的行:

if (!$_GET["rangeStartDate"]) {
$startDate = date("Y-m-d", mktime(0, 0, 0, date("m")-1, date("d")-1, date("Y")));
$endDate = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-1, date("Y")));
} else {
$startDate = $_GET["rangeStartDate"];
$endDate = $_GET["rangeEndDate"];
}



$metrics = "ga:visits";
$dimensions = "ga:keyword";
$filters = "ga:keyword==(not set)";
$optParams = array('dimensions' => $dimensions, 'filters' => $filters);
$arrSiteResults = $service->data_ga->get($ids,$startDate,$endDate,$metrics,$optParams);
$notSetVisits = $arrSiteResults['rows'][0][1];

// Visits and Page Views
$metrics = "ga:visits";
$dimensions = "ga:keyword";
$optParams = array('dimensions' => $dimensions, 'sort' => '-ga:visits', 'max-results' => '12');
$arrSiteResults = $service->data_ga->get($ids,$startDate,$endDate,$metrics,$optParams);
$arrSiteValue = $arrSiteResults['rows'];

这里是 var_dump of: $arrSiteValue:

array(12) { [0]=> array(2) { [0]=> string(9) "(not set)" [1]=> string(4) "2582" } [1]=> array(2) { [0]=> string(14) "(not provided)" [1]=> string(4) "1504" } [2]=> array(2) { [0]=> string(10) "compass fm" [1]=> string(3) "149" } [3]=> array(2) { [0]=> string(18) "compass fm grimsby" [1]=> string(2) "25" } [4]=> array(2) { [0]=> string(9) "compassfm" [1]=> string(2) "10" } [5]=> array(2) { [0]=> string(15) "compassfm.co.uk" [1]=> string(1) "9" } [6]=> array(2) { [0]=> string(16) "compass fm radio" [1]=> string(1) "8" } [7]=> array(2) { [0]=> string(18) "grimsby rugby club" [1]=> string(1) "8" } [8]=> array(2) { [0]=> string(13) "compass radio" [1]=> string(1) "7" } [9]=> array(2) { [0]=> string(21) "compass radio grimsby" [1]=> string(1) "5" } [10]=> array(2) { [0]=> string(19) "www.compassfm.co.uk" [1]=> string(1) "5" } [11]=> array(2) { [0]=> string(15) "compass fm news" [1]=> string(1) "4" }}

最佳答案

PHP 的 json_encode 函数总是将 PHP 字符串编码为 JSON 字符串。如果数据以字符串形式进入 JSON,那么它在 PHP 中也是一个字符串。

为什么它在PHP中是一个字符串是一个有趣的问题。也许数据来自数据库?

无论如何,解决方案是在将字符串传递给 json_encode 时将字符串转换为整数(使用 (int) ):

$dataArray[$key] = (int) $value;

请注意,我不会使用 is_numeric 检查。 API 显然期望值是一个整数,所以我建议您提供一个。如果无法转换该值,它将是 0,这可能是您的情况下的合理默认值。


好的,上面的代码是错误的,因为它试图将数组转换为整数。那么,问题是该数组是如何构造的。如果您无法显示创建无效值的代码行,则很难帮助您解决此问题。

但我敢打赌 5 英镑,解决方案是 (int)


根据最新更新。我没有意识到数据来自 Google Analytics。您获得了数据,它看起来像这样:[1]=> string(4) "2582"。这显然是一个包含数字字符的字符串。您需要使用 (int) 将其转换为数字。你应该在你的循环中这样做:

if($i == 3){
break;
}
$value[1] = (int) $value[1]; // cast the number to an int
$dataArray[$key] = $value;

关于php - 数组中的值是字符串而不是整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com