MycodezMedlem sedan feb. 2010445 inlägg
Hej,
jag har googlat runt lite men inte hittat lite någon direkt lösning eller så har jag sätt det men vart för blind :p
Det jag vill göra det är detta,
jag har en dynamisk lista som är kopplat till en databas som man kan välja mellan med en checkbox om man nu vill ha detta till sin sida eller inte.
denna post array kan se ut så här
array(
1 =>on,
2 => on,
3 => on
);
nycklarna (key) i arrayen är den dynamisk i denna array,
men sen har min användare en sträng som är kopplat till eras konto, denna stäng är olika nycklar som skrivs 1,2 osv.. det kör jag en enkel explode() på så arrayn blir
array(
0 =>1,
1 => 2,
2 => 8
);
nu vill jag enkelt kolla finns de olika nycklarna i post arrayn i värdena i den andra arrayn.
$post är post arrayn och $data är arrayn jag fixat från datan jag fick fån databasen, så ger jag exempel på hur jag vill att detta ska funka( skriver i ord)
del ett
finns ( $post[nycklen] inte i något av $data arrayns värden) isåfall gör detta
lägg till i i någon variabel så man sedan kan lägga till detta i batabasen,
del två
finns något värde i $data arrayn som inte finns i $post arryens nycklar så ta bort den raden i $data arrayn så man kan uppdatera databasen med detta.
så $post nycklarna är saker man kan söka på e tanken så man ska alltså kunna ändra vad man ska bli hittat på för nycklar drf dessa post nycklar måsta matscha i databasen,
hoppas ni förstår vad jag vill skapa :)
metalboyMedlem sedan jan. 2005870 inlägg
Jag förstår inte riktigt vad du menar, men gör ett försök :)
Del 1:
Beroende på om du vill veta om nyckel eller värde existerar, kolla på array_key_exists() resp in_array()
Del 2:
Kolla på array_intersect() om det handlar om värden i båda arrayerna. Annars får du nog knåpa ihop en egen funktion om det är värde i en array och nyckel i den andra. Men det känns som en ganska enkel sak med hjälp av bland annat någon av funktionerna i lösningsförslagets första del.
MycodezMedlem sedan feb. 2010445 inlägg
Låter som en lösning ska kolla på detta :) men tror jag har en alternativ lösning på detta med :)
prplxrMedlem sedan juni 2012557 inlägg
Jag har gjort något liknande för många år sedan, vill jag minnas. Då använda jag mig ej av den approach som metalboy nämner, utan gjorde precis tvärt om. Loopade igenom arrayen och sedan jämförde värdet mot en sträng och tog sedan ut min key utifrån det.
Uschalingen, det blev väldigt flummigt förklarat.
MycodezMedlem sedan feb. 2010445 inlägg
jag gjorde en flummig förklaring, men jag har gjort så här:
foreach ($_POST as $k => $v){
if(!in_array ($k, $PCIDusers)){
echo 'save - ';
}else{
echo 'have - ';
}
echo '<br>';
}
den gör grunden nu ska jag bara göra så att alla som kan man lagra i en array, men hur gör jag det till en array som kan göra det till en sträng så man kan spara den strängen i databasen.
men sen nu kommer den bökigare.
jag det som postas är alltså de saker som ska vara datan så man kan ändra och ta bort det som finns redan i databasen, för det som inte finns i postvariablen, ska ju inte längre var kvar i databasen lite bökig förklaringen men så gott som möjligt.
sen e det lite mer bökiga saker men det måste jag försöka klura på,
men en sak hur sorterar jag värden i arrayen
så alltså från array(0=>1, 1=>4, 2=>3 ) till array(0=>1, 1=>3, 2=>4 )
e det sort man ska köra?
MycodezMedlem sedan feb. 2010445 inlägg
Jag har gjort lösningen nu,
jag gjorde en del ändringar i databasen för att underlätta datahanteringen, sen skapade jag en funktion som läste av detta så jag fick ut rätt del av datan vid rätt tidpunkt då jag anropar ju den delen.
min datasträng ser ut : 1:1,2,3,4|2:1,2,3|3:45,99,1000
som sen läses av av denna vackra kod
$PCIDusers = explode('|', $res['know']);
if(count($PCIDusers)>0){
foreach ($PCIDusers as $key => $value) {
$ia=explode(':', $value);
foreach ($ia as $k => $v) {
if($k == 0){
$kvarde = $v;
}
if($k == 1){
$i[$kvarde] = explode(',', $v);
}
}
}
}
foreach ($i as $key => $value) {
if($key == $id){
foreach ($value as $k => $v) {
$d[] = $v;
}
}
}
variabelnamnen är kanske inte dem bästa jag vet ^^ plus inga kommentar fixade än.
nu ska jag försöka klura ut hur jag ska lyckas göra databassträngen uppdaterad :)