我有一个名为$data
的多维数组,它基本上是从表中提取到数组中的数据。
这就是我使用JS_extractor获取数组的方法:
set_include_path(get_include_path() . PATH_SEPARATOR . './library/');
require_once 'JS/Extractor.php';
$extractor = new JS_Extractor(file_get_contents('temp.html'));
$body = $extractor->query("body")->item(0);
$table = $body->query("//table[@class='rstatisztika_tabla']")->item(0);
$data = array();
foreach ($table->query('tr') as $i => $tr) {
if ($i == 0) {
continue;
}
$a = $tr->query('.//a');
$a = $a->item($a->length - 1);
$url = $a->getAttribute('href');
$parsed = parse_url($url);
parse_str($parsed['query'], $query);
$data[] = array(
$a->textContent,
$url,
$query['user'],
);
}
//var_dump($data);
当我真正做到
时var_dump($data);
我明白了:
array(3)
{
[0]=> array(3)
{
[0]=> string(4) "Thad"
[1]=> string(7) "http://localhost/index.php?m=karakterlap&user=91"
[2]=> string(2) "91"
}
[1]=> array(3)
{
[0]=> string(4) "Bill"
[1]=> string(8) "http://localhost/index.php?m=karakterlap&user=110"
[2]=> string(3) "110"
}
[2]=> array(3)
{
[0]=> string(7) "Thadson"
[1]=> string(7) "http://localhost/index.php?m=karakterlap&user=147"
[2]=> string(3) "147"
}
}
我还有一个名为warlord的Mysql数据库表
CREATE TABLE IF NOT EXISTS `warlord` (
`id` int(5) NOT NULL default '0',
`name` varchar(35) character set utf8 NOT NULL default '',
`active` tinyint(1) NOT NULL default '1',
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `warlord` (`id`, `name`, `active`) VALUES
(2, 'Admin', 0), (100, 'Thadson', 1), (147, 'John', 1);
从数组中,我想将新用户(Thad& Bill)添加到军阀表中并将它们设置为活动状态(1)
我希望同样在阵列中的用户(Thadson)保持活跃状态(1)
但是我希望不在数组中的用户(John)设置为非活动状态(0)
并将admin也不在数组中(并且已经处于非活动状态)处于非活动状态(0)
我知道这是一个非常初学者的问题,但我该怎么做?
由于
答案 0 :(得分:2)
您可能希望使用array_map函数为多数组设置回调函数并相应地处理它:
答案 1 :(得分:0)
我看到了这个,我试过了:
$data = array();
for($i=0; $i<count($data_array); $i++){
$data_items[$i] = explode(',', $data_array[$i]); // create a multi-dimensional array
$data[] = '( ' .$data_items[$i][2]. ', '.$data_items[$i][0]. ', '. 1 .')';
}
$sql = "INSERT INTO warlord(id, name, active) VALUES ('".$data_items[$i][2]."','".$data_items[$i][0]."','1') ";
...将数据存入我的表格
我忽略了数组中的第二个元素(看起来像这样:[1] =&gt; string(7)“user = 91”)我尝试将元素[2]和[0]插入到通过将1放入活动字段,使新用户处于活动状态。
这显然不是我所需要的(实际上它没有做任何事情)而且我不知道我在做什么。这就是我寻求帮助的原因。
答案 2 :(得分:0)
如果我要解决这个问题,我首先会尝试将我的数组($data
数组以及数据库中的数组)组织成类似的格式(可能使用id
作为数组密钥)这样我就可以使用array_intersect
来计算$data
和$database
中的人(即应该设置有效的人)和array_diff
来解决问题$data
中的$database
和array_diff
中的不(即需要添加到数据库中的人),然后再次$database
($database
这一次(第一次)计算$data
中的人和{{1}}中的不(即应该设置为非活动状态的人)。
希望这有助于您进入写作轨道。抱歉,我没有时间为您编写代码。