如果之前在基本数组中看到过 id,则从多维数组中移除
Remove from multidimensional array if has seen id before in an basic array
我想在 php 中通过使用类似这样的方法将 msgid 记录到文本文件来停止重复消息 file_put_contents("a.txt", implode(PHP_EOL, $array1), FILE_APPEND);
然后使用 $array1 = file("a.txt");
将其转换回数组 我还想从数组中删除来自集合名称的消息
我知道如何将 json 转换为数组 $array1 = json_decode($json, true);
Json 来自 api 我无法控制的回复
{
"API": "Online",
"MSG": [
{
"info": {
"name": "example"
},
"msg": "example",
"msgid": "example"
},
{
"info": {
"name": "example"
},
"msg": "example",
"msgid": "example"
}
]
}
您好,请使用以下代码,首先对其进行相应的测试
$uniqueMessages = unique_multidim_array($messages,'msg');
用法:将键作为第二个参数传递,您需要检查数组的唯一性。
<?php
/* Function to handle unique assocative array */
function unique_multidim_array($array, $key) {
/* temp array to hold unique array */
$temp_array = array();
/* array to hold */
$i = 0;
/* array to hold the key for unique array */
$key_array = array();
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
$messages = array(
0 => array(
'info' => array(
'name' => 'example'
),
'msg' => 'example',
'msgid' => 'example'
),
1 => array(
'info' => array(
'name' => 'example 1'
),
'msg' => 'example 1',
'msgid' => 'example 1'
),
3 => array(
'info' => array(
'name' => 'example'
),
'msg' => 'example',
'msgid' => 'example'
)
);
echo '<pre>';
echo '*****************BEFORE***********************<br/>';
var_dump($messages);
echo '*****************AFTER***********************<br/>';
$uniqueMessages = unique_multidim_array($messages,'msg');
var_dump($uniqueMessages);
这对我有用,这是一个修改后的函数 click here for original function
function RemoveElementByArray($array, $key, $seen){
foreach($array as $subKey => $subArray){
if(in_array($subArray[$key], $seen)){
unset($array[$subKey]);
}
}
return $array;
}
示例:
$array = array(
array("id" => "1", "name" => "example1"),
array("id" => "2", "name" => "example2"),
array("id" => "3", "name" => "example3"));
$SeenArray = array("1", "2");
print_r(RemoveElementByArray($array, "id", $SeenArray));
结果:
Array
(
[2] => Array
(
[id] => 3
[name] => example3
)
)
我想在 php 中通过使用类似这样的方法将 msgid 记录到文本文件来停止重复消息 file_put_contents("a.txt", implode(PHP_EOL, $array1), FILE_APPEND);
然后使用 $array1 = file("a.txt");
将其转换回数组 我还想从数组中删除来自集合名称的消息
我知道如何将 json 转换为数组 $array1 = json_decode($json, true);
Json 来自 api 我无法控制的回复
{
"API": "Online",
"MSG": [
{
"info": {
"name": "example"
},
"msg": "example",
"msgid": "example"
},
{
"info": {
"name": "example"
},
"msg": "example",
"msgid": "example"
}
]
}
您好,请使用以下代码,首先对其进行相应的测试
$uniqueMessages = unique_multidim_array($messages,'msg');
用法:将键作为第二个参数传递,您需要检查数组的唯一性。
<?php
/* Function to handle unique assocative array */
function unique_multidim_array($array, $key) {
/* temp array to hold unique array */
$temp_array = array();
/* array to hold */
$i = 0;
/* array to hold the key for unique array */
$key_array = array();
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
$messages = array(
0 => array(
'info' => array(
'name' => 'example'
),
'msg' => 'example',
'msgid' => 'example'
),
1 => array(
'info' => array(
'name' => 'example 1'
),
'msg' => 'example 1',
'msgid' => 'example 1'
),
3 => array(
'info' => array(
'name' => 'example'
),
'msg' => 'example',
'msgid' => 'example'
)
);
echo '<pre>';
echo '*****************BEFORE***********************<br/>';
var_dump($messages);
echo '*****************AFTER***********************<br/>';
$uniqueMessages = unique_multidim_array($messages,'msg');
var_dump($uniqueMessages);
这对我有用,这是一个修改后的函数 click here for original function
function RemoveElementByArray($array, $key, $seen){
foreach($array as $subKey => $subArray){
if(in_array($subArray[$key], $seen)){
unset($array[$subKey]);
}
}
return $array;
}
示例:
$array = array(
array("id" => "1", "name" => "example1"),
array("id" => "2", "name" => "example2"),
array("id" => "3", "name" => "example3"));
$SeenArray = array("1", "2");
print_r(RemoveElementByArray($array, "id", $SeenArray));
结果:
Array
(
[2] => Array
(
[id] => 3
[name] => example3
)
)