Adding up the numbers in a string in php - php

Adding a string with a variable $a = 'ABC-01-222222'; with $b = 1; and it should give $a = 'ABC-01-222223'

You can use explode() to split the value of $a into three parts. Then add $b to the third item of the array, and then re-join the parts using implode():
$a = 'ABC-01-222222';
$b = 1;
$parts = explode('-', $a);
$parts[2] += $b;
$a = implode('-', $parts);
echo $a;

Related

PHP Convert string (1234) to integer

So in php $a = 1234; and $a = (1234); are both valid integers, 1234.
I have a situation with some third party code where I have $a = "(1234)"; (ie, a string)
The normal converting string to int don't work (because of the brackets)
<?php
$b = (int) $a; // 0
$b = intval($a); // 0
I could do something like
preg_match('/^\(([\d]+)\)$/', $a, $m);
$b = $m[1];
Just wondering if there there some clever way of converting $a back into an integer that I have missed?
The one more option can be
$str = "(1234)";
$int = (int) trim($str, '()');
This will make sure that if it has () that it makes it a negative number.
$a = '1234';
if (0 !== preg_match('/^\((\d+\))$/', $a, $matches)) {
$b = (int)-$matches[1];
} else {
$b = (int)$a;
}

How check in PHP is my string $a at postion $i is string $b

How check in PHP is my string $a at postion $i is string $b
$a = "Ha me duck who,garage?!"
$b = "duck"
$i = 7;
echo function($a,$b,$i); // will return true, but for other $i false
Since you want to check at multiple occurrences, this soln makes a substring at expected index (with length of needle) and checks if the strings match.
<? php
$a = "Ha me duck who,garage, duck?!";
$b = "duck";
$i = 23;
var_dump(chk($a, $b, $i));
function chk($a, $b, $i) {
return substr($a, $i, strlen($b)) === $b;
}

number_format multiple vars at once in php

I have the following script
$a = 434343434343;
$b = $a *3;
$c = $a * 6;
print $a;
print $b;
print $c;
I want all three variables to be returned using the number_format($var) syntax. The three vars are being printed in various parts of an html template. What is the best way to do this for all three vars at once? Should I add these vars to an array and number_format the array?
The best that I can come up with is the following:
$a = 434343434343;
$b = $a *3;
$c = $a * 6;
$a = number_format($a);
$b = number_format($b);
$c = number_format($c);
print $a;
print $b;
print $c;
Is that preferred?
Put those numbers inside an array and format the array, it's faster.
$numbers = array();
$numbers['a'] = 434343434343;
$numbers['b'] = $numbers['a'] * 3;
$numbers['c'] = $numbers['a'] * 6;
foreach($numbers as $key => $val)
{
$numbers[$key] = number_format($val);
}
by the way, if you NEED the values as variables, you can extract them:
extract($numbers); //creates the variables $a, $b, $c
echo $a;
echo $b;
echo $c;
You can see it in action right here.
Seems I found a much better solution.
$a = number_format(434343434343);
$b = number_format($a *3);
$c = number_format($a * 6);
//$a = number_format($a);
//$b = number_format($b);
//$c = number_format($c);
//output
print $a;
print $b;
print $c;

add extra values from other variable in php

I have two valriables in
$a="1:2:3";
$b="1:3:4:5";
Is there any simple method to add 4 and 5 in variable $a. Means i want the value of variable to be
$a="1:2:3:4:5"
A one line solution:
$result = implode(':', array_unique(array_merge(explode(':', $a), explode(':', $b))));
An even shorter one would be:
$result = implode(':', array_unique(array_merge(explode(':', "$a:$b"))));
$a2 = explode(":" , $a);
$b2 = explode(":" , $b);
foreach($b2 as $val)
{
if(in_array($val , $a2))
//do what you want
}
try this
$a="1:2:3";
$b="1:3:4:5";
$a = explode(':', $a);
$b = explode(':', $b);
$c = array_unique(array_merge($a,$b));
$a = implode(':', $c);
echo $a;
I notice that $a is ordered, so you can apply sort to the new array
$sort = SORT_NUMERIC;
$a = implode(':',array_uniqe(array_merge(explode(':',$a),explode(':',$b)),$sort));
See array_unique to other possible sorts.

Insert variable into string at random position

See this code:
<?php
$a = rand(1, 10000000000);
$b = "abcdefghi";
?>
How can I insert $b into a random position of $a?
Assuming "casual" means random:
<?php
$a = rand(1, 10000000000);
$b = "abcdefghi";
//get a random position in a
$randPos = rand(0,strlen($a));
//insert $b in $a
$c = substr($a, 0, $randPos).$b.substr($a, $randPos);
var_dump($c);
?>
above code working: http://codepad.org/VCNBAYt1
Edit: had the vars backwards. I read "insert a into b,
I guess you could by treating $a as a string and concatenating it with $b:
$a = rand(1, 1000000);
$b= "abcd";
$pos = rand(0, strlen($a));
$a = substr($a, 0, $pos).$b.substr($a, $pos, strlen($a)-$pos);
and the results:
a=525019
pos=4
a=5250abcd19
a=128715
pos=5
a=12871abcd5
You should put {$b} on top of {$a} so that you can insert it to {$b}..
eg:
<?php
$b = "abcdefghi";
$a = rand(1, 10000000000);
$a .= $b;
echo $a;
?>
Sth like this :
<?php
$position = GetRandomPosition(); // you will have to implement this function
if($position >= strlen($a) - 1) {
$a .= $b;
} else {
$str = str_split($a, $position);
$a = $str[0] . $b . implode(array_diff($str, array($str[0])));
}
?>
Cast $a to string, then use strlen to get the length of $a. Use rand, with with the length of $a as the maximum, to get a random position within $a. Then use substr_replace to insert $b into $a at the position you've just randomized.

Categories