mysql çok boyutlu diziden

3 Cevap php

Ben denilen çok boyutlu bir dizi var $data bu temelde diziye bir tablodan çıkarılan verilerdir.

Bu benim JS_extractor kullanarak benim dizisini almak nasıl:

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);

Aslında ne zaman

var_dump($data);

Ben bu olsun:

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"
    }
}

Ben de var diktatör denilen bir MySQL veritabanı tablo

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);

From the array, I want to add the new users (Thad & Bill) to the warlord table and set them active (1)
I want the user (Thadson), who is also in the array, to stay active (1)
However I want the user (John) who is not in the array, set to inactive (0)
and leave admin who is also not in the array (and is already inactive) inactive (0)

Bu çok yeni başlayanlar soru olduğunu biliyorum, ama ben bunu nasıl yapabilirim?

Teşekkürler

3 Cevap

Sen çok dizi için bir geri arama işlevini ayarlayın ve buna göre işlemek için işlevini array_map kullanmak isteyebilirsiniz:

array_map

Bunu gördüm ve ben bunu denedim:

$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') ";

... Benim tabloya veri almak için

Ben diziden 2. elemanları (bu gibi bakmak olanları: [1] => string (7) "kullanıcı = 91") görmezden ve elemanları [2] ve [0] tabloya eklemek ve yapmak için çalışacağız Etkin alana 1 yerleştirerek aktif yeni kullanıcılar.

Bu tabii ki ben (aslında bunun herhangi yapmaz) gereken tüm yapmaz ve ben ne yapıyorum hiçbir fikrim yok. Ben yardım için soruyorum nedeni budur.