Array mergen vanuit een functie

Status
Niet open voor verdere reacties.

stevebravo

Gebruiker
Lid geworden
16 jan 2010
Berichten
156
Ik heb een functie die er zo uitziet:

<?php

function query_uitvoeren($con, $sql)
PHP:
{
	$resultaat = odbc_exec($con, $sql) or die (Print "result error ".odbc_error());
		if ($resultaat)
		{
			$rij = odbc_fetch_array($resultaat);
			print_r($rij);
		}
		else
		{
		print "fout";
		}
}

dit is de sql regel die ik gebruik..

PHP:
$sql = "SELECT * FROM persoon WHERE persoon_id = 102";


daarnaast heb ik nog een sql2 een sql3 etc etc..

hoe kan ik alle array's van odbc_fetch_array mergen? dmv array_merge?

bedankt
 
PHP:
$resultset = array();
$queries = array(
  "SELECT * FROM persoon WHERE persoon_id = 102",
  "SELECT * FROM persoon WHERE persoon_id = 103",
  "SELECT * FROM persoon WHERE persoon_id = 104",
)

foreach( $queries as $querystring ) {
   $resultset = array_merge( $resultset, query_uitvoeren($con, $querystring) );
}

Even ervan uitgaande dat je functie de result-set RETURNED en niet print_r'd. Want als je em print_r'd kun je er niks mee, dan wordt ie gewoon op het scherm geplakt.


Btw als je queries er uitzien zoals hier boven kan het een stuk makkelijker door het in 1 query te doen:

[sql]
SELECT *
FROM persoon
WHERE persoon_id IN ( 102, 103, 104 )
[/sql]

Dan krijg je direct alle resultaten.
 
PHP:
$resultset = array();
$queries = array(
  "SELECT * FROM persoon WHERE persoon_id = 102",
  "SELECT * FROM persoon WHERE persoon_id = 103",
  "SELECT * FROM persoon WHERE persoon_id = 104",
)

foreach( $queries as $querystring ) {
   $resultset = array_merge( $resultset, query_uitvoeren($con, $querystring) );
}

Even ervan uitgaande dat je functie de result-set RETURNED en niet print_r'd. Want als je em print_r'd kun je er niks mee, dan wordt ie gewoon op het scherm geplakt.


Btw als je queries er uitzien zoals hier boven kan het een stuk makkelijker door het in 1 query te doen:

[sql]
SELECT *
FROM persoon
WHERE persoon_id IN ( 102, 103, 104 )
[/sql]

Dan krijg je direct alle resultaten.

puntkommatje vergeten??? :D [/plagen]
 
PHP:
$resultset = array();
$queries = array(
  "SELECT * FROM persoon WHERE persoon_id = 102",
  "SELECT * FROM persoon WHERE persoon_id = 103",
  "SELECT * FROM persoon WHERE persoon_id = 104",
)

foreach( $queries as $querystring ) {
   $resultset = array_merge( $resultset, query_uitvoeren($con, $querystring) );
}

Even ervan uitgaande dat je functie de result-set RETURNED en niet print_r'd. Want als je em print_r'd kun je er niks mee, dan wordt ie gewoon op het scherm geplakt.


Btw als je queries er uitzien zoals hier boven kan het een stuk makkelijker door het in 1 query te doen:

[sql]
SELECT *
FROM persoon
WHERE persoon_id IN ( 102, 103, 104 )
[/sql]

Dan krijg je direct alle resultaten.

ik heb nog een vraagje.. kan je de waardes van de array op scriptbasis aanpassen? zoals wanneer ik bijvoorbeeld een integer waarde ontvang vanuit de database, terwijl deze waarde gelijk is aan de string "ja" ??

hoop dat je de vraag begrijpt

bedankt nogmaals
 
Je kunt alles aanpassen met genoeg werk. Je bedoelt dat je "ja" omzet in 1 (of true) bijvoorbeeld?

Als je bijvoorbeeld een veld "getrouwd" terugkrijgt van de database en je wil dat "ja" naar 1 gaat en "nee" naar 0, dan zou je op deze manier over de array heen kunnen lopen om die velden aan te passen:

PHP:
foreach( $resultset as $key => $rij ) {
  if ( $rij['getrouwd'] == 'ja' ) {
    $resultset[ $key ]['getrouwd'] = 1;
  }
  else {
    $resultset[ $key ]['getrouwd'] = 0;
  }
}

Even ervan uitgaande dat je nog steeds de bovenstaande code gebruikt ;)

Als dat niet je vraag was dan moet je em even verduidelijken :)
 
Je kunt alles aanpassen met genoeg werk. Je bedoelt dat je "ja" omzet in 1 (of true) bijvoorbeeld?

Als je bijvoorbeeld een veld "getrouwd" terugkrijgt van de database en je wil dat "ja" naar 1 gaat en "nee" naar 0, dan zou je op deze manier over de array heen kunnen lopen om die velden aan te passen:

PHP:
foreach( $resultset as $key => $rij ) {
  if ( $rij['getrouwd'] == 'ja' ) {
    $resultset[ $key ]['getrouwd'] = 1;
  }
  else {
    $resultset[ $key ]['getrouwd'] = 0;
  }
}

Even ervan uitgaande dat je nog steeds de bovenstaande code gebruikt ;)

Als dat niet je vraag was dan moet je em even verduidelijken :)

Je zit aardig warm.. het is zo dat ik voor elke numerieke waarde in de database (access database handteert bij yes/no een waarde van 0/1 (0 = bijvoorbeeld ongehuwd en 1 = gehuwd) een string terug krijg

Ik moet alle waardes uiteindelijk zo als key/value in een array krijgen dat de waardes 0 gelijk staat aan ongehuwd, en 1 aan gehuwd.

Dit heb ik namelijk nodig voor een conversie methode die ik later ga toepassen
 
Laatst bewerkt:
Als je het andersom wil doen (dus de database zegt 0/1 en jij wil gehuwd/ongehuwd) dan moet je dezelfde functie gebruiken maar dan de "ja" vervangen door 1 en de if en else vervangen door de tekst die je graag wilt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan