$string = "php, photoshop, css";
I’m producing an array from the comma separated values above using the str_getcsv() function:
$array = str_getcsv($string);
Result:
Array ( [0] => php [1] => photoshop [2] => css )
How can I replace the key integers with a string tag for all elements like seen below?
Array ( [tag] => php [tag] => photoshop [tag] => css )
Edit: if not possible what alternative can I apply? I need the array keys to be identical for a dynamic query with multiple OR clauses
e.g.
SELECT * FROM ('posts') WHERE 'tag' LIKE '%php% OR 'tag' LIKE '%photoshop% OR 'tag' LIKE '%css%'
I’m producing the query via a function that uses the array key as a column name and value as criteria.
That is not possible. You can have only one item per key. But in your example, the string “tag” would be the key of every item.
The other way arround would work. So having an array like this:
This might help you, if you want to save the “type” of each entry in an array. But as all the entries of your array seems to be from the same type, just forget about the “tag” and only store the values in a numeric array.
Or you can use a multidimensional array within the numeric array to save the type:
But still using just an numeric array should be fine if all the entries have the same type. I can even think of a last one:
But even if I repeat myself: Just use an ordinary array and name it something like
$tag!BTW:
explode(', ', %string)is the more common function to split a string.To build SQL statement you might do something like this:
This might look confusing but it’s much cleaner than runnig into two foreach-loops building the query.