Paul Brown
Paul Brown

Reputation: 93

convert array output to string in PHP and then add to another array

I'm not certain I'm asking the right question but here goes...

$tags = get_tags(array('exclude' => 46,5,101,22,122,7,102,15,104,47,105,66,43,123, 'fields' => ids));
$tagString = implode (',' , $tags);
echo $tagString;

When I echo this out via the last line it gives me a lovely list of comma separated numbers (the right numbers too fortunately). However, I don't want to echo them I want to include them in more code as follows...

$args = array(
'post_type' => 'post', 
'tag__in' => array (46, 5, 101, 22, 122, 7, 102, 15, 104, 47, 105, 66, 43, 123),
'tag__not_in' => array (comma separated list output by echo $tagString in same format as 'tag__in')
);

It has been suggested using explode but when I do that it returns...

Array ( [0] => 10 [1] => 121 [2] => 20 [3] => 36 etc etc)

I need to lose all the formatting and just get the comma separated list.

Possibly I'm approaching this wrong and maybe I'm not making sense but hopefully someone can follow what I'm trying to achieve. Any help appreciated.

It is linked to this question which got me this far... Trouble including array output in another array

Update:

Thank you James who put me on the right lines. This is the code that did the trick...

$includeTags = array(46,5,101,22,122,7,102,15,104,47,105,66,43,123);
$excludeTags = get_tags(array('exclude' => $includeTags, 'fields' => ids));

$args = array(
    'post_type' => 'post', 
    'posts_per_page' => 12,
    'paged' => $paged,
    'tag__in' => $includeTags,
    'tag__not_in' => $excludeTags
);

I've changed the array names for clarity.

Upvotes: 0

Views: 115

Answers (4)

James
James

Reputation: 3805

I'm definitely not sure what you are asking. First, I'm surprised your original array works at all. You are using a mix between an associative array and just an incremental array it looks like.

Can you try something like:

$excludeArr = array(46,5,101,22,122,7,102,15,104,47,105,66,43,123);
$tags = get_tags(array('exclude' => $excludeArr, 'fields' => ids));
$tagString = implode (',' , $tags);
echo $tagString;

Where the exclude is an array itself. Then:

$args = array(
'post_type' => 'post', 
'tag__in' => $excludeArr,
'tag__not_in' => $excludeArr
);

None of that $args array makes much since since the in and not_in appear to be the same, though.

If you just need $excludeArras a string, you can implode(",", $excludeArr);

EDIT

After seeing your update, I'm editing my answer as requested to show the 2 seperate arrays.

$includeTags = array(46,5,101,22,122,7,102,15,104,47,105,66,43,123);
$excludeTags = get_tags(array('exclude' => $includeTags, 'fields' => ids));

$args = array(
    'post_type' => 'post', 
    'posts_per_page' => 12,
    'paged' => $paged,
    'tag__in' => $includeTags,
    'tag__not_in' => $excludeTags
);

Upvotes: 1

Paul Brown
Paul Brown

Reputation: 93

$includeTags = array(46,5,101,22,122,7,102,15,104,47,105,66,43,123);
$excludeTags = get_tags(array('exclude' => $includeTags, 'fields' => ids));

$args = array(
'post_type' => 'post', 
'posts_per_page' => 12,
'paged' => $paged,
'tag__in' => $includeTags,
'tag__not_in' => $excludeTags
);

Upvotes: 0

HappyCoder
HappyCoder

Reputation: 61

Your best friend is named

serialize()

(http://www.php.net/manual/de/function.serialize.php)

This simply converts the whole array contents to a string. :)

Upvotes: 0

user557846
user557846

Reputation:

for block 2 cant you just use

$args = array(
'post_type' => 'post', 
'tag__in' => $tagString,
);

Upvotes: 1

Related Questions