4

It might be a simple task. But I am new to PHP.

I am creating a string of values getting from database for a specific purpose.

How to remove last char from string.

$str=''; foreach($dataarray as $value) { $str.=$value."##"; } 

it gives me string like ABC##DEF##GHI##

I have to remove last 2 chars ##

EDIT:

have shown here sample code . actull y array is 2D. so cant use implode()

1

9 Answers 9

7

If the implode method isn't appropriate, then after your foreach loop, you can try one of these functions:

http://www.php.net/manual/en/function.rtrim.php

$str = rtrim($str,'#'); 

http://php.net/manual/en/function.substr.php

$str = substr($str,-2); 

If you have a 2D array, you could still use the implode func like this:

$a = array(); foreach( $foo as $bar ) foreach( $bar as $part ) $a[] = $part; $str = implode('##',$a); 
Sign up to request clarification or add additional context in comments.

Comments

6

You might be better of just to use implode instead of this loop?

implode ( "##" , $dataarray ); 

3 Comments

Damn you were 2 sec faster :-)
I don't think its 2sec ... have seen 20sec delay and suddenly people posted the same answer has mine ... ( Not sure if it was even copy & paste )
Well, if you need to copy paste this that would be sorry indeed :). Anyway, @rizwan : I don't see much in multiple dimensions in your question. If your actual data-type is not a plain array, you should post your actual datatype. Just adding '##' and then removing them again is probably still too funky :)
1

You could use PHP's function implode

$str = implode("##", $dataarray);

Comments

1
<?php $str = "1,2,3,4,5,"; echo chop($str,","); ?> 

It will remove last comma (,) from the string $str

Comments

1

Use substr:

$str = substr($str,0, -2); 

http://php.net/manual/en/function.substr.php

Comments

0

You can use Implode() for making such string instead of making it manually

implode("##",$dataarray); 

BTW for removing last char you can do like below:

substr($str,0,(strlen($str)-2)); 

2 Comments

Wouldn't substr($str, 0, -2) be better for your second option
better but i was not aware of it. Thanks for updating me
0

There's a few ways to go about it but:

$str = rtrim($str, "#"); 

Comments

0

http://php.net/manual/en/function.substr-replace.php

$newstr = substr_replace($longstr ,"",-2); 

This will create $newstr by taking $longstr and removing the last tow characters.

Comments

0

Maybe

$str=''; $first = true; foreach($dataarray as $value) { if(!$first) { $str .= "##"; } else { $first = false; } $str .= $value;  } 

Comments