【发布时间】:2016-09-17 03:12:05
【问题描述】:
array(1) {
["value"] => array(1000) {
[0]=> array(9) {
["PartitionKey"]=> string(11)"AWT-GPI.com"
["RowKey"]=> string(36) "0024a6ac-6cf1-454a-91b2-15bfec3a3d86"
["Timestamp"]=> string(28) "2016-09-09T20:16:26.8674483Z"
["Email"]=> string(20) "ginyoung30@gmail.com"
["First_Name"]=> string(8) "Jennifer"
["Hash"]=> string(32) "d656d0c21b8f3c14fe03232bb68d1b53"
["IP_1"]=> string(0) ""
["Last_Name"]=> string(5) "Young"
["Username"]=> string(9) "flacobell"
}
[1]=> array(9) {
["PartitionKey"]=> string(11) "AWT-GPI.com"
["RowKey"]=> string(36) "002c00c4-e064-43e8-9dd8-319c8d6663bd"
["Timestamp"]=> string(28) "2016-09-09T20:19:54.5500874Z"
["Email"]=> string(22) "Glenn@flavorleague.com"
["First_Name"]=> string(1) "G"
["Hash"]=> string(32) "1444a7b2c86506158013d1175137eede"
["IP_1"]=> string(0) "" ["Last_Name"]=> string(6) "Wilson"
["Username"]=> string(13) "misterspeed76"
}
}
}
就是使用这段代码的数组
$count = count($null_check);
for ($i = 0; $data < $count; $i++) {
foreach ($null_check['value'][$i] as $key => $data) {
$parsed_key = str_replace('_', ' ', $key);
echo $parsed_key.': '.$data.'<br>';
}
echo '<br><br>';
}
我可以得到这个输出
PartitionKey: AWT-GPI.com
RowKey: 0024a6ac-6cf1-454a-91b2-15bfec3a3d86
Timestamp: 2016-09-09T20:16:26.8674483Z
Email: ginyoung30@gmail.com
First Name: Jennifer
Hash: d656d0c21b8f3c14fe03232bb68d1b53
IP 1:
Last Name: Young
Username: flacobell
PartitionKey: AWT-GPI.com
RowKey: 002c00c4-e064-43e8-9dd8-319c8d6663bd
Timestamp: 2016-09-09T20:19:54.5500874Z
Email: Glenn@flavorleague.com
First Name: G
Hash: 1444a7b2c86506158013d1175137eede
IP 1:
Last Name: Wilson
Username: misterspeed76
现在我想取消设置RowKey 和Timestamp,但是当我在foreach 语句中这样做时
unset($null_check['RowKey'];
它不起作用,我为每个外部或内部创建一个单独的,不起作用,我使用 foreach 中分配的值不起作用。从字面上看,没有任何作用。这只是我有大约30个这样的部分。都是一样的格式,我只想去掉RowKey和Timestamp这两个键,怎么办?
【问题讨论】:
-
unset($null_check['RowKey'];最后缺少),如果这是一个错字,那么unset($null_check['value'][$i]['RowKey']);只能作为其内部数组使用。或使用unset($data['RowKey']);取消设置 -
你打开错误报告了吗?在文件顶部添加error reporting:
ini_set("display_errors", 1); error_reporting(E_ALL);,您可能会遇到一些错误。但首先我不确定你是否知道你在用你的 for 和 foreach 循环做什么。首先计算你的数组,它只会返回 1,因为在第一个维度中你只有值value => Array(...)。 -
这意味着您的 for 循环只进行 1 次迭代,而在您的 foreach 循环中,您只需遍历第一个子数组,基本上是
foreach($null_check["value"][0] as $key => $value)。因此,在那个 foreach 循环中,您可能会尝试取消设置该元素,但这是行不通的,因为您正在处理该元素的副本。因此,您要么想使用原始数组中的完整键,要么通过引用循环遍历元素。 -
是的,这是一个错字,我确实使用了
unset($data['RowKey']);,但它不起作用。unset($null_check['value'][$i]['RowKey']);也没有用。你说的参考是什么意思?所以我应该在 foreach 之外取消设置?那也行不通。那么除了删除之外,我可以跳过某些键还是删除更容易? -
您的输出与您的代码不匹配,也与您显示的数组不匹配。只需给我们一个minimal reproducible example。
标签: php arrays json array-unset